Я пытаюсь получить сумму, среднее значение и количество показателей
df.groupby(['id', 'pushid']).agg({"sess_length": [ np.sum, np.mean, np.count]})
Но я получаю «модуль 'numpy' не имеет атрибута 'count'», и я пробовал разные способы выражения функции подсчета, но не могу заставить его работать. Как просто подсчитать общее количество записей вместе с другими показателями?
вы можете использовать np.size
@jxc size
засчитает nan
как строку, count
исключит nan
Я думаю, вы имеете в виду:
df.groupby(['id', 'pushid']).agg({"sess_length": [ 'sum', 'count','mean']})
Как упоминалось в документация панд, вы можете использовать строковые аргументы, такие как «сумма», «количество». TBH Это более предпочтительный способ выполнения этих агрегаций.
Вы можете использовать строки вместо функций, например:
df = pd.DataFrame(
{"id": list("ccdef"), "pushid": list("aabbc"),
"sess_length": [10, 20, 30, 40, 50]}
)
df.groupby(["id", "pushid"]).agg({"sess_length": ["sum", "mean", "count"]})
Что выводит:
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
Это может сработать:
df.groupby(['id', 'pushid']).agg({"sess_length": [ np.sum, np.mean, np.**size**]})
Есть ли преимущество у этого синтаксиса по сравнению с использованием [ 'sum', 'mean', 'count']
, как описано в прошлогоднем принятый ответ? Если это так, было бы полезно отредактировать свой ответ, чтобы включить это.
Вы просто хотите
len
? Не уверен, что вы имеете в виду о разных способах выражения функции счета -numpy
определенно не имеетnp.count
, как вы видели. Что эта функция должна делать?