根据列值

时间:2018-02-21 06:36:40

标签: python pandas dataframe merge

我有五个数据框,每个数据框都有唯一的列和一个公共列 id no。。假设每个数据框都包含以下列:

  1. df1:id no,时间,日期,年龄,姓名。
  2. df2:id no,性别,地址,就业,birth_date。
  3. df3:id no,..... etc。
  4. df4:id no,...... etc。
  5. df5:id no,....... etc。
  6. 我已将merge用作以下内容:

    first1 = pd.merge(df1, df2, how= 'left', on = 'id_no')
    first2 = pd.merge(first1, df3, how= 'left', on = 'id_no')
    first3 = pd.merge(first2, df4, how= 'left', on = 'id_no')
    combineall = pd.merge(first3, df5, how= 'left', on = 'id_no')
    

    问题: combineall 数据框中缺少df3列。虽然当我单独打印df3时,我看到所有可用的内容。合并期间我的df3如何丢失?是否有我使这个过程更容易,问题更少。

    目标: 我希望comabinall数据框与来自df1,df2,df3,df4,df5的所有列基于 id_no 合并。

1 个答案:

答案 0 :(得分:1)

试试这个:

from functools import reduce
finaldf = reduce(lambda left,right: pd.merge(left, right, on='id_no', how='left'), [df1,df2,df3,df4,df5])