Pandas de Python: media y sum groupby en diferentes columnas al mismo tiempo

Tengo un dataframe de pandas que se parece a lo siguiente:

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

Y mi salida deseada es:

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

Básicamente para obtener la sum de la columna Credit y Missed y para hacer el promedio en el Grade Lo que estoy haciendo ahora mismo son dos groupby en Name y luego obtener la sum y el promedio, y finalmente fusionar los dos marcos de datos de salida, que no parece ser la mejor manera de hacerlo. También encontré esto en SO, lo cual tiene sentido si quiero trabajar solo en una columna:

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

¿Pero no estás seguro de cómo hacer una sola línea para ambas columnas?

Necesitas agg por dictionary y luego rename nombres de columnas:

 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 

Si quieres también crea una columna de 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 
 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'})