Pandas groupby agg -如何获得计数?

vsnjm48y  于 2023-03-28  发布在  其他
关注(0)|答案(4)|浏览(210)

我试图得到一个度量的和、均值和计数

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

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

jv4diomz

jv4diomz1#

你可以使用字符串而不是函数,像这样:

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
hi3rlvi2

hi3rlvi22#

我想你的意思是:

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

正如在documentation of pandas中提到的,你可以使用字符串参数,比如'sum','count'。TBH这是更好的聚合方法。

4c8rllxm

4c8rllxm3#

这可能行得通:

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

jfewjypa4#

只需使用np.size
不知道为什么答案需要30个字符长,当答案是直截了当的

相关问题