【问题标题】:One to Many merge row level一对多合并行级别
【发布时间】:2017-09-15 22:16:57
【问题描述】:

我遇到了许多人都遇到过的数据问题。我目前有一个包含交易信息的数据集。根据 Transaction_Number,我会发现参与交易的每个人花费了多长时间。

最终的输出是这样的

 Transaction_Number        Created On             Created_By      Time_Diff

  27327920232            2014-12-08 03:29:08      jake            NaN
  27323232336            2017-04-28 18:39:03       James           0
  27323232336            2017-04-28 18:26:23      Tony            760.0

现在我面临的问题是我缺少一列。我通过从数据库中查询并提取了一个名为“Product_Number”的字段来解决这个问题。我正在加入 Transaction_Number 上的两个表。这是问题出现的地方,第二个数据框名称 D 的 Transaction_Number 仅列出一次与 Product_Number 匹配。主数据框有多次出现的事务。因此,当我运行以下代码时,我的结果没有意义。基于 12K+ 的可能性仅输出 4 个匹配项。

         X                       D                        D
   Transaction_Number     Transaction_Number          Product_Number
     27327920232            27327920232                Cw-xs-re-89
     27327920232            72732332323                pw-ts-sf-89
     27327920232            32338033383                Cw-ns-tn-86

    results = pd.merge(X, D, how='inner', on= "Transaction_Number")

我该怎么做才能找到正确的匹配项。我也尝试过左连接,任何类型的提示都会有所帮助。 - 谢谢

【问题讨论】:

  • 你刚才不是问了同样的问题吗?为什么第一个交易号前面有破折号?
  • 怎样才能找到正确的匹配项?只有您可以告诉我们这一点,因为 merge 正在按需要工作。从多个 Transactions 中提取哪个 Product_Number?第一的?最后一个?

标签: python database pandas join data-munging


【解决方案1】:

你在寻找外部合并吗?

results = pd.merge(X, D, how='outer', on= "Transaction_Number")

【讨论】:

    猜你喜欢
    • 2018-04-20
    • 2020-07-05
    • 1970-01-01
    • 1970-01-01
    • 2021-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多