假设我有两个数据框:
df1:
A
0 a
1 b
df2:
A
0 a
1 c
我希望结果是两个帧的并集,额外列显示该行所属的源数据帧。如果有重复项,应删除重复项,并且相应的额外列应显示两个来源:
A B
0 a df1, df2
1 b df1
2 c df2
我可以获得没有重复的连接数据框 (df3),如下所示:
import pandas as pd
df3=pd.concat([df1,df2],ignore_index=True).drop_duplicates().reset_index(drop=True)
我想不出/找不到一种方法来控制元素的位置。如何添加额外的列?
非常感谢您的任何提示。
最佳答案
与 indicator
参数合并,并重新映射结果:
m = {'left_only': 'df1', 'right_only': 'df2', 'both': 'df1, df2'}
result = df1.merge(df2, on=['A'], how='outer', indicator='B')
result['B'] = result['B'].map(m)
result
A B
0 a df1, df2
1 b df1
2 c df2
关于python - 两个 Pandas 数据框的联合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54315222/