如果您能提供一些帮助,我将不胜感激,因为无论进行多少次谷歌搜索或使用 .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/