【问题标题】:Sensibly merging two dataframes明智地合并两个数据帧
【发布时间】:2022-01-11 06:51:34
【问题描述】:

如果我的一个数据框给了我一些关于项目的信息:

    itemId     property_1      property_2     property_n       Decision
 0      i1          88.90             NaN              0              1
 1      i2          87.09    7.653800e+06              0              0
 2      i3          78.90    7.623800e+06              1              1
 3      i4          93.02             NaN              1              0
 ...

另一个给了我一些关于用户如何与项目交互的信息:

     userId        itemId      Decision
  0      u1            i1             0
  1      u1            i2             1
  2      u2            i1             1
  3      u2            i3             0
  4      u2            i4             1
  5      u3            i5             0
    ...

我有兴趣预测Decision,如果我分别处理每个数据帧,这很容易做到。 但是我能否以某种方式将第二个合并到第一个中,因为在第二个中,每个 item 以不同的 Decisions 出现多次?

我想要类似的东西:

    itemId     property_1      property_2     property_n     u1_decision  ...    Decision
  0     i1          88.90             NaN              0               0               1
  1     i2          87.09    7.653800e+06              0               1               0
  2     i3          78.90    7.623800e+06              1             NaN               1
  4     i4          93.02             NaN              1             NaN               0  
   ...

所以每个用户都变成一列,结果非常稀疏。第一个问题是这是否有意义,第二个问题是如何将第二个数据帧中的行作为列合并到第一个(我知道如何在Decision 上使用df.merge,但这不是给我想要的结果)。

【问题讨论】:

  • 由于它是多对一的,因此您需要为项目创建聚合列,可以是总和或频率等......

标签: python pandas dataframe merge


【解决方案1】:

你可以pivot第二张桌子喜欢:

df.pivot(index='itemId', columns='userId', values='Decision').reset_index()

然后您可以在itemId 上执行merge。

【讨论】:

  • 但是现在索引列的名称是userId,但最终确实有效。
  • 是的,有趣的熊猫索引。
猜你喜欢
  • 1970-01-01
  • 2014-04-14
  • 1970-01-01
  • 2020-05-05
  • 2012-07-23
  • 2019-12-01
  • 2017-12-17
  • 2013-09-21
  • 2019-03-29
相关资源
最近更新 更多