使用Pandas按列分组,找到每个组中计数的百分比

3
    age    section   count
0   13-17   a         160
1   25-34   c         128
2   13-17   d         128
3   25-34   a         120
4   35-44   b         120
5   35-44   a         120
6   25-34   b         112

如何计算每个组中计数的百分比?
例如输出:
    age    section   count  perc
0   13-17   a         160   55.5
1   25-34   c         128   35.5
2   13-17   d         128   44.4
3   25-34   a         120   33.3
4   35-44   b         120   50
5   35-44   a         120   50
6   25-34   b         112   31.1

比如,对于年龄在13-17之间的人,上述例子中的perc应为=160/288和128/288。

我能够处理的查询是:

df.groupby(['age'])['count'].agg('mean') 

但这并不能给我想要的东西。有什么帮助吗?
1个回答

11
您可以使用lambda函数计算每个年龄/计数的百分比
df['perc'] = df.groupby('age')['count'].apply(lambda x: x*100/x.sum())


    age section count   perc
0   13-17   a   160     55.555556
1   25-34   c   128     35.555556
2   13-17   d   128     44.444444
3   25-34   a   120     33.333333
4   35-44   b   120     50.000000
5   35-44   a   120     50.000000
6   25-34   b   112     31.111111

如果你想要将百分比值四舍五入,

df['perc'] = df.groupby('age')['count'].apply(lambda x: np.round(x*100/x.sum(), 2))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接