Pandas groupby agg - 如何获得计数?

L X*_*dor 4 python group-by aggregate pandas

我正在尝试获取度量的总和、平均值和计数

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

但是我得到“模块'numpy'没有属性'count'”,并且我尝试了不同的方式来表达计数功能,但无法让它工作。我如何将汇总记录数与其他指标一起汇总?

Ale*_*lex 5

您可以使用字符串代替函数,如下所示:

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"]})
Run Code Online (Sandbox Code Playgroud)

哪些输出:

           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
Run Code Online (Sandbox Code Playgroud)