Как работает параметр 'level' метода groupby в Pandas? - PullRequest
0 голосов
/ 09 декабря 2018
(df.set_index('STNAME').groupby(level=0)['CENSUS2010POP']
   .agg({'avg': np.average, 'sum': np.sum}))

В приведенном выше коде, почему необходимо указывать параметр уровня в groupby, потому что, как я понимаю, параметр уровня требуется только тогда, когда у нас есть multiIndex в DataFrame.

1 Ответ

0 голосов
/ 09 декабря 2018

Не только 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)]))
...