python - Python按一列分组并计算另一列的百分比
问题描述
我有一个数据框如下:
Frame SizeOfExposure
0 1 5
1 1 5
2 2 7
3 3 2
4 3 8
我正在尝试按数字计算SizeOfExposure
每个行组的百分比Frame
。
我尝试了以下方法:
df.groupby("Frame")["SizeOfExposure"].sum()
这将打印每帧的 SizeOfExposure 总和。但是,当我尝试
df['SizeOfExpPerc']=df["SizeOfExposure"]/df.groupby("Frame")["SizeOfExposure"].sum()
我正在为大多数行填充“Nan”。我该如何计算?所需的输出是
Frame SizeOfExposure SizeOfExpPerc
0 1 5 0.5
1 1 5 0.5
2 2 7 1.0
3 3 2 0.2
4 3 8 0.8
解决方案
用于GroupBy.transform
返回Series
与由聚合值填充的原始 DataFrame 相同大小的返回,因此可能的除法:
df['SizeOfExpPerc']=df["SizeOfExposure"]/df.groupby("Frame")["SizeOfExposure"].transform('sum')
print (df)
Frame SizeOfExposure SizeOfExpPerc
0 1 5 0.5
1 1 5 0.5
2 2 7 1.0
3 3 2 0.2
4 3 8 0.8
详情:
print (df.groupby("Frame")["SizeOfExposure"].transform('sum'))
0 10
1 10
2 7
3 10
4 10
Name: SizeOfExposure, dtype: int64
推荐阅读
- react-apollo - 查询变量更改时 Apollo 缓存失败
- git - 如何判断 git gc 当前是否正在运行?
- grails - Grails 数据绑定 - 如何排除子属性
- python - Python 中的引用数组
- c++ - 使用自定义比较器时,C++ 排序功能如何工作?
- sql-server - 在链接服务器中查找列数据类型
- html - 如何使我的图像 DIV 在可滚动的 div 中更大?
- python - 选择语句 | 1210:执行准备好的语句的参数数量不正确
- python - 从 Python 中存储为字典的 AST 树中提取 IF 案例
- amazon-web-services - 作为 SSO 解决方案的 Okta 与 AWS SSO 比较