Skip to main content
 首页 » 编程设计

python之如何获取每个 `user_id`对应的每个tag值的比例

2025年05月04日21zlslch

我得到一个数据框如下:

    user_id label 
0   937922  1 
1   937922  2 
2   937922  2 
3   937922  2 
4   1369473 1 
5   1330642 2 
6   1330642 2 
7   1330642 1 
8   1330642 1 
9   411741  1 
10  411741  1 
11  1552476 2 
12  1552476 1 
13  1552476 1 
... ... 
... ... 

我想获取每个user_id对应的label为2的比例,应该是这样的:

user_id label 
937922  0.7500 
1369473 0 
1330642 0.5000 
411741  0 
1552476 0.3333 

我知道我应该以某种方式使用 pd.groupby 并将其除以 pd.groubpy(['user_id']).count()[['type']].
但是我很难做到,我找不到我想要的。
如果不介意谁能帮助我?
提前致谢。

请您参考如下方法:

groupby 和 value_counts 为您提供所有计数:

df.groupby('user_id').label.value_counts(normalize=True) 

输出:

user_id  label 
411741   1        1.000000 
937922   2        0.750000 
         1        0.250000 
1330642  1        0.500000 
         2        0.500000 
1369473  1        1.000000 
1552476  1        0.666667 
         2        0.333333 
Name: label, dtype: float64