因此,我一直在尝试寻找一种解决方案来合并2个数据帧。主键有时匹配,有时它们在DF1而不是DF2和DF2而不是DF1上。我希望显示所有行和ID,并为未显示的值提供一个“-”。对于确实同时出现在两个值中的值,我希望将它们串联在同一行中,如DF3所示:
>>>DF1 >>>DF2
ID Apples Oranges Transaction ID Milk Meat Transaction
1 2 1 Credit 1 2 3 Cash
3 3 4 Debit 2 7 2 Cash
5 2 3 Cash 6 2 3 Cash
>>>DF3
ID Apples Oranges Transaction1 Milk Meat Transaction2
1 2 1 Credit 2 3 Cash
2 - - - 7 2 Cash
3 3 4 Debit - - -
5 2 3 Cash - - -
6 - - - 2 3 Cash
答案 0 :(得分:0)
看起来像一个基本的外部联接,还有一个fillna()用NaN
替换'-'
值
DF1.merge(df2, on='ID', how='outer').fillna('-').sort_index()
ID Apples Oranges Transaction_x Milk Meat Transaction_y
1 2 1 Credit 2 3 Cash
2 - - - 7 2 Cash
3 3 4 Debit - - -
5 2 3 Cash - - -
6 - - - 2 3 Cash