gpt4 book ai didi

python - 按组别划分的百分比

转载 作者:太空宇宙 更新时间:2023-11-03 17:11:55 24 4
gpt4 key购买 nike

给定以下数据框:

DF = pd.DataFrame({'Site': ['A', 'A', 'A', 'A', 'B', 'B','B','B'], 
'Score': [1, -1, -0.5, 1, 0, -1, 2, 4],
'Group': [1, 1, 2, 2, 1, 1, 2, 2]})
DF
Group Score Site
0 1 1.0 A
1 1 -1.0 A
2 2 -0.5 A
3 2 1.0 A
4 1 0.0 B
5 1 -1.0 B
6 2 2.0 B
7 2 4.0 B

我想让 pandas 添加一列,显示每个网站得分等于或高于 0 的行的百分比(即网站 B 中 4 行中的 3 行等于或高于零,因此结果为 75% ),另一列显示每个站点内的分组百分比(即站点 A 中的组 1 有 2 分中的 1 分等于或高于零,因此结果为 50%)。期望的结果如下:

    Group   Score   Site    Site%   SiteGroup%
0 1 1.0 A 0.5 0.5
1 1 -1.0 A 0.5 0.5
2 2 -0.5 A 0.5 0.5
3 2 1.0 A 0.5 0.5
4 1 0.0 B 0.75 0.5
5 1 -1.0 B 0.75 0.5
6 2 2.0 B 0.75 1
7 2 4.0 B 0.75 1

提前致谢!

最佳答案

你可以尝试:

df['score_indicator'] = df.Score.apply(lambda x: 1 if x >=0 else 0)
df['Site%'] = df.groupby('Site')['score_indicator'].transform(lambda x: x.sum() / x.count())
df['Group%'] = df.groupby(['Site','Group'])['score_indicator'].transform(lambda x: x.sum() / x.count())

获取

print(df)
Group Score Site score_indicator Site% Group%
0 1 1.0 A 1 0.50 0.50
1 1 -1.0 A 0 0.50 0.50
2 2 -0.5 A 0 0.50 0.75
3 2 1.0 A 1 0.50 0.75
4 1 0.0 B 1 0.75 0.50
5 1 -1.0 B 0 0.75 0.50
6 2 2.0 B 1 0.75 0.75
7 2 4.0 B 1 0.75 0.75

关于python - 按组别划分的百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33988305/

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