Pandas groupby agg - как подсчитать? - PullRequest
2 голосов
/ 09 апреля 2019

Я пытаюсь получить сумму, среднее значение и количество метрик

df.groupby(['id', 'pushid']).agg({"sess_length": [ np.sum, np.mean, np.count]})

Но я получаю "модуль" numpy "не имеет атрибута" количество "", и я пробовал разные способы выраженияфункция подсчета, но не может заставить ее работать.Как мне просто составить общее количество записей вместе с другими показателями?

Ответы [ 2 ]

1 голос
/ 09 апреля 2019

Вы можете использовать строки вместо функций, например:

In [16]: df = pd.DataFrame({"id": list("ccdef"), 
                            "pushid": list("aabbc"),
                            "sess_length": [10, 20, 30, 40, 50]})

In [17]: df.groupby(['id', 'pushid']).agg({"sess_length": [ 'sum', 'mean', 'count']})

Out[17]:           sess_length
                           sum mean count
         id pushid
         c  a               30   15     2
         d  b               30   30     1
         e  b               40   40     1
         f  c               50   50     1
0 голосов
/ 09 апреля 2019

Я думаю, что вы имеете в виду:

df.groupby(['id', 'pushid']).agg({"sess_length": [ 'sum', 'count','mean']})

Как упомянуто в документации панд , вы можете использовать строковые аргументы, такие как 'sum', 'count'. TBH Это более предпочтительный способ выполнения этих агрегаций.

...