计算数据框熊猫中所有联盟的百分比
Posted
技术标签:
【中文标题】计算数据框熊猫中所有联盟的百分比【英文标题】:Calculate percentage of all alliances in year in dataframe pandas 【发布时间】:2021-10-17 19:18:39 【问题描述】:我有看起来像的数据框(实际框架的年份从 1990 年到 2020 年):
Year | Chains_Normalize | Alliance_Name |
---|---|---|
1990 | 0.000 | Gaint Inc |
1990 | 0.000 | Kell Inc |
1990 | 0.000 | New Corp |
1991 | 13.222 | Sad Corp |
1991 | 18.152 | Second Corp |
1991 | 16.333 | Shin Inc |
1992 | 19.212 | No inc |
1992 | 0.000 | Third inc |
1992 | 14.332 | Fourth inc |
如果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
【问题讨论】:
【参考方案1】:只需计算每年的非零值,然后除以 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
【讨论】:
以上是关于计算数据框熊猫中所有联盟的百分比的主要内容,如果未能解决你的问题,请参考以下文章