将两个数据框与原点合并

Merging two data frames with origins

假设我有以下两个数据框 df_1 和 df_2 并且想将它们与一个附加列合并,该列说明该行是否存在于 df_1,df_2 或两者兼而有之。有什么方法可以在使用合并时直接执行此操作吗?

df_1

df_2

我想要的数据框:

通过dictmerge and for expected output add map中使用参数indicator:

df = pd.merge(df1, df2, how='outer', indicator='origin')
print (df)
   Index   x  y      origin
0     20   5  8   left_only
1     35   4  7   left_only
2     55   3  2        both
3     60  12  1        both
4     22   4  3  right_only
5     30  12  6  right_only

d = {'left_only':'1', 'right_only':'2', 'both':'1 & 2'}
df['origin'] = df['origin'].map(d)
print (df)
   Index   x  y origin
0     20   5  8      1
1     35   4  7      1
2     55   3  2  1 & 2
3     60  12  1  1 & 2
4     22   4  3      2
5     30  12  6      2