我有两个大小不同的数据框,我想将它们合并。
这就像基于另一个大小不同的数据框对数据框列的“更新”。
这是示例输入:
数据框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']]
Voilà, df3 正是我所需要的! 谢谢大家!
PS:我已经找到答案了,有更好的答案回答我自己的问题吗?
答案 0 :(得分:2)
df1.merge(df2,how='left', left_on='CODUSU', right_on='CODUSU')
这应该可以解决问题。
此外,值得注意的是,如果您希望结果数据框不包含列ABC,则可以使用df2.drop(“ ABC”)而不是df2。