Python pandas:同时对不同列进行平均和求和分组

Python pandas:同时对不同列进行平均和求和分组,python,pandas,Python,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

我有一个熊猫数据框,看起来如下所示:

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   
基本上是为了得到列
信用
缺失
的总和,并对
等级
进行平均。我现在正在做的是在
Name
上进行两个groupby,然后得到sum和average,最后合并两个输出数据帧,这似乎不是最好的方法。我还发现,如果我只想在一个专栏上工作,这是有意义的:

df.groupby('Name')['Credit'].agg(['sum','average'])
但不知道如何为两个柱做一个内衬

您需要通过
字典
然后
重命名
列名称:

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
如果还希望从
名称创建列

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
A = pd.DataFrame.from_dict({'Name':['A','A','B','B'],'Missed':[1,1,2,1],'Credit':[3,1,3,2],'Grades':[10,12,10,20]})

A.groupby('Name').agg({'Missed':'sum','Credit':'sum','Grades':'mean'})