python - 如何按分组总和划分熊猫列中的元素
问题描述
我有一个看起来像这样的数据框,df1:
col1 col2
A 2
A 3
A 4
B 4
B 8
现在,我想计算col2
每个唯一项目的价值百分比col1
。因此,我希望结果是:
col1 col2
A 0.22
A 0.33
A 0.33
B 0.33
B 0.67
因此,col2
对于 中的唯一元素,之和必须为 1 col1
。有谁知道如何在不使用 for 循环的情况下做到这一点?
解决方案
使用GroupBy.transform
for sum
s 到 Series 并除以原始列col2
:
df['col2'] /= df.groupby('col1')['col2'].transform('sum')
#working like
#df['col2'] = df['col2'] / df.groupby('col1')['col2'].transform('sum')
print (df)
col1 col2
0 A 0.222222
1 A 0.333333
2 A 0.444444
3 B 0.333333
4 B 0.666667
推荐阅读
- php - PHP 相当于 Python 的 oauth2client 对 Google 提醒的 POST 请求
- r - 命名向量的 rbind Named num
- php - google drive file.list 查询为子文件夹 ID 返回 false - php
- rest - 如何在您无法控制的 POST 方法中实现幂等性?
- ruby-on-rails-5 - Rails .first(n),但在取 n 之前跳过“m”
- powershell - net use 命令在 cmd 中有效,但在 powershell 中无效?
- docker - Jenkins 和 Kubernetes 集成本地主机
- delphi - 创建对象时出现运行时错误
- python - 将值解包到变量或无(ValueError:没有足够的值来解包)
- sql-server - T SQL 使用 OPENQUERY 中的 SELECT 更新内连接