python - 根据特定列值计算百分比
问题描述
我想计算每一行的百分比。下面是一个示例数据框:
KEY DESCR counts
0 2 to A 1
1 2 to B 1
2 20 to C 1
3 35 to D 2
4 110 to E 4
5 110 to F 1
6 110 to G 1
百分比公式是:(计数 / 列 KEY 上的 counts.indicator 总和)*100
示例:
下面的 (1/2)*100 是一个卡住的代码,因为我尝试了很多次但没有发生。
percentage = []
for i in range(len(df)):
percentage.append((df['counts'][i] / ...............) * 100)
df['PERCENTAGE'] = percentage
df
预期输出为:
KEY DESCR counts PERCENTAGE
0 2 to A 1 50
1 2 to B 1 50
2 20 to C 1 100
3 35 to A 2 100
4 110 to E 4 67
5 110 to C 1 16
6 110 to G 1 16
谁能帮我解决这个问题。谢谢
解决方案
如果性能很重要GroupBy.transform
,则将sum
原始列除以Series.div
,最后乘以Series.mul
:
df['PERCENTAGE'] = df['counts'].div(df.groupby('KEY')['counts'].transform('sum')).mul(100)
您可以按组划分每个值,但如果大 DataFrame 或许多组效果较差:
df['PERCENTAGE'] = df.groupby('KEY')['counts'].transform(lambda x: x / x.sum()).mul(100)
print (df)
KEY DESCR counts PERCENTAGE
0 2 to A 1 50.000000
1 2 to B 1 50.000000
2 20 to C 1 100.000000
3 35 to D 2 100.000000
4 110 to E 4 66.666667
5 110 to F 1 16.666667
6 110 to G 1 16.666667
推荐阅读
- bash - grep 命令列表 bin/bash 或破折号
- windows - 如何使用 cdb(windbg 命令行)在会话之间保留断点?
- excel - 尝试从 Word 文档调用 Excel 文档
- javascript - 即使我正在创建安全服务器(https),nodejs 端口也不安全
- php - 为什么这个函数不在包含时执行?
- ruby-on-rails - Heroku 应用程序的 Bundler 运行的 Ruby 版本错误
- php - PDO 错误:$pdo->prepare()->execute() 抛出错误“在布尔值上调用成员函数 fetch()”
- java - 如何从java中的文件打印读取的换行符?
- python - 使用 PyPDF2 从 PDF 中提取的图像是倾斜的,并且它的颜色是反转的
- react-native - 我是否必须对带有 react-native-web 的 monorepo 中的所有软件包使用 no-hoist?