如何在将熊猫数据框中的一列复制到另一列的同时匹配两者中公共列的值?

时间:2019-11-13 06:38:40

标签: python pandas dataframe

我有以下2个dfs。 我想将df2的C列复制到df1的C列,其中df1的A和B列与df2的A和B列匹配。

df1
A    B    C    F   G ...
1   12   NaN  52  50
2   14   NaN  62  60
3   15   NaN  72  70
2   14   NaN  82  80

df2

A   B  C   D    E  ...
2  14  0  abc  xyz
3  15  1  efg  pqr
1  12  1  hij  stu

现在,我希望我的df1看起来像:

df1
A   B  C   F    G  ...
1  12  1  52   50
2  14  0  62   60
3  15  1  72   70
2  14  0  82   80

如何在熊猫中实现这一目标?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

首先删除列C,然后删除DataFrame.merge,仅保留左过滤连接的列-AB列用于连接,并新增C列,最后按原始df1DataFrame.reindex对列重新排序:

df = (df1.drop('C', 1)
         .merge(df2[['A','B', 'C']], on=['A','B'], how='left')
         .reindex(columns=df1.columns))
print (df)
   A   B  C   F   G
0  1  12  1  52  50
1  2  14  0  62  60
2  3  15  1  72  70
3  2  14  0  82  80