Не только MultiIndex
, его также следует использовать в Index
, поскольку существует только один уровень.
Также для функции agg
с указанным столбцом для агрегата являетсяСписок необходимых паролей для указания имени новых столбцов с агрегированными функциями:
df1 = (df.groupby('STNAME')['CENSUS2010POP']
.agg({'avg': np.average, 'sum': np.sum}))
FutureWarning: использование dict для Series для агрегации не рекомендуется и будет удалено в следующей версии .agg ({'avg': np.average, 'sum': np.sum}))
Но ваш код должен быть проще:
df = pd.DataFrame({'STNAME':list('aab'),
'CENSUS2010POP':[10,20,50]})
df1 = (df.groupby('STNAME')['CENSUS2010POP']
.agg([('avg', np.average), ('sum', np.sum)]))
print (df1)
avg sum
STNAME
a 15 30
b 50 50
Также, если действительнонеобходимо создать индекс из столбца STNAME
или уже находится в DataFrame в последних версиях рабочих панд (0,20+):
(df.set_index('STNAME').groupby('STNAME')['CENSUS2010POP']
.agg([('avg', np.average), ('sum', np.sum)]))