联盟的两只熊猫DataFrames

Leo*_*Rai 10 python merge concatenation dataframe pandas

假设我有两个数据框:

DF1:

  A
0 a
1 b
Run Code Online (Sandbox Code Playgroud)

DF2:

  A
0 a
1 c
Run Code Online (Sandbox Code Playgroud)

我想要的结果是联合两帧的与额外的列表示该行属于源数据帧.如果有重复项,应删除重复项,相应的额外列应显示两个来源:

  A  B
0 a  df1, df2
1 b  df1
2 c  df2
Run Code Online (Sandbox Code Playgroud)

我可以得到连接数据框(df3)没有重复,如下所示:

import pandas as pd
df3=pd.concat([df1,df2],ignore_index=True).drop_duplicates().reset_index(drop=True)
Run Code Online (Sandbox Code Playgroud)

我想不出/找到一种方法可以控制哪个元素去哪里.如何添加额外的列?

非常感谢您的任何提示.

cs9*_*s95 12

合并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
Run Code Online (Sandbox Code Playgroud)