首页 > 解决方案 > 2个具有不同主键的数据框

问题描述

所以我一直在试图找到一个解决方案来合并 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

标签: pythonpandasdataframemergeconcatenation

解决方案


看起来像一个基本的外连接,以及一个用于替换NaN值的 fillna()'-'

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

推荐阅读