通过另一列的分组值之和规范化pandas dataframe中的列

2024-10-01 13:34:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我有点纠结于尝试规范化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

我想得到每一个项目购买归一化由每个用户购买的总数。在

换言之,对于每一个“bulled”条目,我想将其除以该用户的总购买量(作为另一列)。在这种情况下,我想要的输出是这样的(但是“normalized”列不必是分数):

^{pr2}$

到目前为止,我已按用户分组,并按用户得出总和:

grouped = df.groupby(by='user')
grouped.aggregate(np.sum)

但在这一点上我被卡住了。谢谢!在


Tags: 数据项目用户dataframepandasdf条目item
1条回答
网友
1楼 · 发布于 2024-10-01 13:34:01

pandasmap

df.assign(normalized=df.bought.div(df.user.map(df.groupby('user').bought.sum())))

pandastransform

^{pr2}$

两者都有收益

   bought item  user  normalized
0       1    A     0    0.500000
1       1    B     0    0.500000
2       1    A     1    0.142857
3       3    B     1    0.428571
4       3    C     1    0.428571
5       2    B     2    0.400000
6       3    C     2    0.600000

相关问题 更多 >