【问题标题】:2 dataframes with different primary keys [duplicate]2个具有不同主键的数据框[重复]
【发布时间】:2019-10-11 15:16:00
【问题描述】:

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

【问题讨论】:

  • 我认为 df1.merge(df2, how='outer') 可以满足您的要求。您将拥有 NaN,但您可以使用 fillna 将它们设置为 '-'。

标签: python pandas dataframe merge concatenation


【解决方案1】:

看起来像一个基本的外连接,以及一个用 '-' 替换 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

【讨论】:

  • 此输出不正确。这不是行的顺序
  • 你说得对,我忘了我已经对索引进行了排序以获取 OP 中的输出。感谢指正,已编辑!
猜你喜欢
  • 1970-01-01
  • 2020-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多