Grupo de Python Pandas por múltiples columnas, media de otra, sin grupo por objeto
Tengo algunos datos que se parecen a esto, y se llama 'test_df'
ID Year Value Value2
0 A 2012 1 4
1 A 2012 2 5
2 A 2013 4 6
3 A 2013 5 7
4 B 2014 6 8
5 B 2014 7 4
6 B 2013 8 8
Quiero que se vea así:
ID Year Value_avg Value2_avg
A 2012 1.5 4.5
A 2013 4.5 6.5
B 2013 8.0 8.0
B 2014 6.5 6.0
Sin embargo, cuando trato de agrupar por varias columnas, terminan como grupos por objetos:
Value_avg Value2_avg
ID Year
A 2012 1.5 4.5
2013 4.5 6.5
B 2013 8.0 8.0
2014 6.5 6.0
Aquí está el código que probé:
out_df = pd.DataFrame()
out_df['Value_avg'] = test_df['Value'].groupby([test_df['ID'], test_df['Year']]).mean()
out_df['Value2_avg'] = test_df['Value2'].groupby([test_df['ID'], test_df['Year']]).mean()
Intenté agregar:
out_df['Value_avg'] = test_df['Value'].groupby([test_df['ID'],
test_df['Year']], as_index=False).mean()
pero tengo este error:
"TypeError: as_index=False only valid with DataFrame"