明智地合并两个数据框
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
。
如果我的一个数据框给我一些关于项目的信息:
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
。