gpt4 book ai didi

python - 在 Pandas 中根据 groupby 获取百分比?

转载 作者:太空宇宙 更新时间:2023-11-03 11:14:15 26 4
gpt4 key购买 nike

我有一个像这样的 pandas DataFrame:

subject bool Count
1 False 329232
1 True 73896
2 False 268338
2 True 76424
3 False 186167
3 True 27078
4 False 172417
4 True 113268

我想将 Count 转换为每个主题组的百分比。例如,第 1 行是 329232/(329232 + 73896) = 0.816,第 2 行是 73896/(329232 + 73896) = 0.183。然后第 2 组的总数会发生变化,依此类推。

这可以通过 groupby 来实现吗?我尝试遍历行,但收效甚微。

最佳答案

这对我有用:


import numpy as np
import pandas as pd

# data
df = pd.DataFrame({'subject': [1, 1, 2, 2, 3, 3, 4, 4],
'bool': [False, True, False, True, False, True, False, True],
'Count': [329232, 73896, 268338, 76424, 186167, 27078, 172417, 113268]})

# answer
df['Per_Subject_Count_Pct'] = df['Count'].div(
df.groupby('subject')['Count'].transform(lambda x: x.sum()))
print(df)

给予:

   subject   bool   Count  Per_Subject_Count_Pct
0 1 False 329232 0.816693
1 1 True 73896 0.183307
2 2 False 268338 0.778328
3 2 True 76424 0.221672
4 3 False 186167 0.873019
5 3 True 27078 0.126981
6 4 False 172417 0.603521
7 4 True 113268 0.396479

关于python - 在 Pandas 中根据 groupby 获取百分比?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54717620/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com