明智地合并两个数据框

Sensibly merging two dataframes

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

    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  
   ...

所以每个用户都变成一列,导致东西很稀疏。第一个问题是这是否有意义,第二个问题是如何将第二个数据框中的行作为列合并到第一个数据框中(我知道如何 df.merge on Decision,但是这没有给我想要的结果)。

你可以pivot第二个table喜欢:

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

然后您可以在 itemId 上执行 merge