gpt4 book ai didi

python Pandas : mean and sum groupby on different columns at the same time

转载 作者:太空狗 更新时间:2023-10-29 21:19:14 24 4
gpt4 key购买 nike

我有一个 pandas 数据框,如下所示:

Name    Missed    Credit    Grade
A 1 3 10
A 1 1 12
B 2 3 10
B 1 2 20

我想要的输出是:

Name    Sum1   Sum2    Average
A 2 4 11
B 3 5 15

基本上是获取列 CreditMissed 的总和,并在 Grade 上取平均值。我现在正在做的是 Name 上的两个 groupby,然后求和和平均值,最后合并两个输出数据帧,这似乎不是最好的方法。我还在 SO 上发现了这一点,如果我只想在一列上工作,这很有意义:

df.groupby('Name')['Credit'].agg(['sum','average'])

但不确定如何为两列做一行?

最佳答案

你需要agg通过 dictionary 然后 rename columns names:

d = {'Missed':'Sum1', 'Credit':'Sum2','Grade':'Average'}
df=df.groupby('Name').agg({'Missed':'sum', 'Credit':'sum','Grade':'mean'}).rename(columns=d)
print (df)
Sum1 Sum2 Average
Name
A 2 4 11
B 3 5 15

如果还想从 Name 创建列:

df = (df.groupby('Name', as_index=False)
.agg({'Missed':'sum', 'Credit':'sum','Grade':'mean'})
.rename(columns={'Missed':'Sum1', 'Credit':'Sum2','Grade':'Average'}))
print (df)
Name Sum1 Sum2 Average
0 A 2 4 11
1 B 3 5 15

具有命名聚合的解决方案:

df = df.groupby('Name', as_index=False).agg(Sum1=('Missed','sum'), 
Sum2= ('Credit','sum'),
Average=('Grade','mean'))
print (df)
Name Sum1 Sum2 Average
0 A 2 4 11
1 B 3 5 15

关于 python Pandas : mean and sum groupby on different columns at the same time,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48909110/

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