python - 如何获取 groupby 总计,然后计算 Pandas DataFrame 列的百分比

标签 python python-3.x pandas

如果您能提供一些帮助,我将不胜感激,因为无论进行多少次谷歌搜索或使用 .agg 都无法帮助我解决这个问题。 我有一个包含选举结果的数据框。我已按市政当局和 PartyName 进行分组,以获得市政当局中每个政党的总票数,在我重置索引后,它看起来像这个片段:

         Municipality                           PartyName  TotalValidVotes
0  BUF - Buffalo City  AFRICAN CHRISTIAN DEMOCRATIC PARTY             2519
1  BUF - Buffalo City        AFRICAN INDEPENDENT CONGRESS            15600
2  BUF - Buffalo City           AFRICAN NATIONAL CONGRESS           268052
3  BUF - Buffalo City              CONGRESS OF THE PEOPLE             3913
4  BUF - Buffalo City                 DEMOCRATIC ALLIANCE           106790

我现在想要计算一个市镇各政党占总票数的百分比,但不知道如何生成每个市镇的选票总和,以便我可以计算百分比。 我觉得这在 Pandas 中应该很容易做到,但我不知所措。提前致谢。

最佳答案

更简单但更高效的版本:

您可以使用.groupby() + .transform()'sum' 上获取该组的总和。然后,您可以将 TotalValidVotes 列除以该总和,然后乘以 100 以获得百分比。

df['TotalValidVotes_Pct'] = (df['TotalValidVotes'] / df.groupby('Municipality')['TotalValidVotes'].transform('sum')) * 100

请注意,此版本仅使用矢量化操作,并且运行速度应该更快

结果:

print(df)

         Municipality                           PartyName  TotalValidVotes  TotalValidVotes_Pct
0  BUF - Buffalo City  AFRICAN CHRISTIAN DEMOCRATIC PARTY             2519             0.634710
1  BUF - Buffalo City        AFRICAN INDEPENDENT CONGRESS            15600             3.930719
2  BUF - Buffalo City           AFRICAN NATIONAL CONGRESS           268052            67.540832
3  BUF - Buffalo City              CONGRESS OF THE PEOPLE             3913             0.985955
4  BUF - Buffalo City                 DEMOCRATIC ALLIANCE           106790            26.907784

关于python - 如何获取 groupby 总计,然后计算 Pandas DataFrame 列的百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68772401/

相关文章:

python - 如何使用 CDS 列设置多行字形的 "line_dash"?

python - 如果数字是 1 位,则预先打印一个空格

Python pandas 智能追加

python - Pandas Dataframe 到具有单独记录的 JSON 文件

python - 在python中使用pandas时如何修复 "Attribute error"

python - 在python中对类实例进行排序

python - 行或行末尾的 '\' 会导致 split() 错误

python - 从 CSV 读取数据并将数据写入 CSV - 字符串到整数

python - 在列表中搜索词典

python - 访问 flask 中的静态文件夹