熊猫按列分组查找每个组中计数的百分比

时间:2020-05-14 16:08:32

标签: python pandas

    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

如何计算每个组中计数的百分比?

Ex输出:

    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 个答案:

答案 0 :(得分:3)

您可以使用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))