gpt4 book ai didi

python - 在 Pandas Dataframe 中进行分组时的多重聚合

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

如何用pandas翻译sql:

select count(case new=='A' then 1 else 0 end)/count(*) as score1 
,sum(s*s2) as score2
from table
group by u1;

像这样的数据框:

df = pd.DataFrame({'s':[5,2,1,3],
's2':[1,2,1,2],
'new':list('ABAB'),
'u1':list('WWYY'),
'u2':list('abab')})

new s s2 u1 u2
0 A 5 1 W a
1 B 2 2 W b
2 A 1 1 Y a
3 B 3 2 Y b

最终结果如下:

   u1  score1  score2  
0 W 0.5 9
1 Y 0.5 7

最佳答案

看来你需要 aggregate ,但首先创建新列:

#convert boolean mask to int
df['score1'] = (df.new == 'A').astype(int)
#multiple s and s2 columns
df['score2'] = df.s.mul(df.s2)
print (df)
new s s2 u1 u2 score1 score2
0 A 5 1 W a 1 5
1 B 2 2 W b 0 4
2 A 1 1 Y a 1 1
3 B 3 2 Y b 0 6

df = df.groupby('u1').agg({'score1':'mean', 'score2':'sum'})
print (df)
score1 score2
u1
W 0.5 9
Y 0.5 7

关于python - 在 Pandas Dataframe 中进行分组时的多重聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42780109/

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