【发布时间】:2017-01-31 21:02:15
【问题描述】:
我在尝试规范化 pandas 数据框中的某些列条目时有点卡住了。所以我有一个这样的数据框:
df = pd.DataFrame({
'user':[0,0,1,1,1,2,2],
'item':['A','B', 'A', 'B','C','B','C'],
'bought':[1,1,1,3,3,2,3]})
df
bought|item|user
----------------
1 |A |0
1 |B |0
1 |A |1
3 |B |1
3 |C |1
2 |B |2
3 |C |2
我想通过每个用户购买的总数来标准化购买的每件商品的数量。
换句话说,对于“购买”的每个条目,我想将其除以为该用户购买的总数的总和(作为另一列)。在这种情况下,我想要的输出是这样的(但“标准化”列不必是分数):
bought|item|user|normalized
--------------------------
1 |A |0 |1/2
1 |B |0 |1/2
1 |A |1 |1/7
3 |B |1 |3/7
3 |C |1 |3/7
2 |B |2 |2/5
3 |C |2 |3/5
到目前为止,我已按用户分组并按用户获得总和:
grouped = df.groupby(by='user')
grouped.aggregate(np.sum)
但在这一点上,我被困住了。谢谢!
【问题讨论】: