首页 > 解决方案 > 合并两个不同大小的数据框

问题描述

我有两个不同大小的数据框,我想合并它们。

这就像基于另一个不同大小的数据框对数据框列的“更新”。

这是一个示例输入:

数据框 1

  CODUSU Situação TIPO1
0    1AB        P    A0
1    2C3        C    B1
2    3AB        P    C1

数据框 2

  CODUSU Situação  ABC
0    1AB        A    3
1    3AB        A    4

我的输出应该是这样的:

数据框 3

  CODUSU Situação TIPO1
0    1AB        A    A0
1    2C3        C    B1
2    3AB        A    C1

PS:我是通过循环完成的,但我认为应该有更好更简单的方法来制作它!

我读了这个内容:pandas merging 101并写了这段代码:

df3=df1.merge(df2, on=['CODUSU'], how='left', indicator=False)
df3['Situação'] = np.where((df3['Situação_x'] == 'P') & (df3['Situação_y'] == 'A') , df3['Situação_y'] , df3['Situação_x'])
df3=df3.drop(columns=['Situação_x', 'Situação_y','ABC'])
df3 = df3[['CODUSU','Situação','TIPO1']]

瞧,df3正是我所需要的!谢谢大家!

PS:我已经找到答案了,有没有更好的地方来回答我自己的问题?

标签: pythonpandasdataframe

解决方案


df1.merge(df2,how='left', left_on='CODUSU', right_on='CODUSU')

这应该可以解决问题。

此外,值得注意的是,如果您希望生成的数据框不包含 ABC 列,您将使用 df2.drop("ABC") 而不仅仅是 df2。


推荐阅读