2个具有不同主键的数据框

时间:2019-10-11 15:16:00

标签: python pandas dataframe merge concatenation

因此,我一直在尝试寻找一种解决方案来合并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

1 个答案:

答案 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