python - 计算数据框熊猫中所有联盟的百分比
问题描述
我有看起来像的数据框(实际框架的年份从 1990 年到 2020 年):
年 | Chains_Normalize | Alliance_Name |
---|---|---|
1990 | 0.000 | 盖恩特公司 |
1990 | 0.000 | 凯尔公司 |
1990 | 0.000 | 新公司 |
1991 | 13.222 | 悲伤公司 |
1991 | 18.152 | 第二公司 |
1991 | 16.333 | 新公司 |
1992 | 19.212 | 没有公司 |
1992 | 0.000 | 第三公司 |
1992 | 14.332 | 第四公司 |
如果 Chains_Normalize 不为 0,我必须计算每年的联盟百分比。(这个想法是计算每年数据框中所有联盟的百分比)
结果将如下所示:
Year Percentage
1990 0.000
1991 33.333
1992 22.222
1990 的联盟全部为零,百分比为 0。
1991 年有 3 个非零联盟和 (3/9)*100 = 33.333
1992 年有 2 个非零联盟和 (2/9)*100 = 22.222
解决方案
只需计算每年的非零值,然后除以长度df
并乘以 100(您已经手动使用(N/9)*100
):
>>> df['Chains_Normalize'].ne(0).groupby(df['Year']).sum() / len(df) * 100
Year
1990 0.000000
1991 33.333333
1992 22.222222
Name: Chains_Normalize, dtype: float64
这是有效的,因为df['Chains_Normalize'].ne(0)
返回一系列布尔值,其中联盟非零,然后您可以求和:
>>> df['Chains_Normalize'].ne(0)
0 False
1 False
2 False
3 True
4 True
5 True
6 True
7 False
8 True
Name: Chains_Normalize, dtype: bool
推荐阅读
- c# - 在 CheckBox ComboBox 中显示选择
- prolog - 在序言中分离事实列表
- javascript - WordPress ajax 加载更多不能正常工作?
- python - 'int' 和 'str' 的实例之间不支持 Python-'<'
- python - 如何使用逗号分隔符在 python 中输入数字?
- java - 缓冲图像宽度和高度随机反转值
- sql - 在视图中添加虚拟列
- javascript - message.channel.members 不再包含文本频道中的所有用户
- xml - XAML ListvView 显示来自 XMLDocument 变量的 XML 数据
- postgresql - 由于生成的列,从转储中恢复 PG 数据库失败