python - Pandas 按列分组查找每组中的计数百分比

标签 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

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

前输出:

    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') 

但这并不能满足我的要求。有帮助吗?

最佳答案

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

关于python - Pandas 按列分组查找每组中的计数百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61802071/

相关文章:

python - 齐柏林飞艇 : how to print pandas dataframe with index?

python - Pandas :从timedelta中提取小时

python - uWSGI 闲置后不重启

python - 将行附加到数据框

python - 列表更改意外地反射(reflect)在子列表中

python - 如何区分两个 numpy FloatingPointError 异常?

python - 如何使用二维数组索引 df 并查找另一个数组中的值?

python - Pandas 日期时间间隔重采样到秒

python - 如何使用 Zoom 7.2m 三频 USB 调制解调器通过 AT 命令发送短信?

python - pandas vlookup 两列并查找值