Pandas Groupby 应用函数计数大于零的值

16 投票
1 回答
12278 浏览
提问于 2025-04-18 00:36

使用Pandas的Groupby和apply函数来计算大于零的值

我正在以以下方式使用groupby和agg:

df.groupby('group')['a'].agg({'mean' : np.mean, 'std' : np.std})

我还想在同一列['a']中计算大于零的值

下面这行代码可以按我想要的方式进行计数,

sum(x > 0 for x in df['a'])

但在应用到groupby时,我无法让它正常工作。

以下是我尝试将Pandas计算应用于groupby的一个例子:

df.groupby('group')['a'].apply(sum(x > 0 for x in df['a']))

但我收到了一个错误信息:

AttributeError: 'numpy.int32'对象没有'module'这个属性

有没有人能建议一下该怎么做?

1 个回答

15

评论中的回答:

 .agg({'pos':lambda ts: (ts > 0).sum()}) # –  behzad.nouri Mar 31 at 0:00 

这是我对未回答问题的贡献哦 :) 感谢 behzad.nouri 的帮助。

更新 2020
在最新的 pandas 版本中,你需要这样做:

 .agg(pos=lambda ts: (ts > 0).sum()) 

否则会出现以下错误:

SpecificationError: nested renamer is not supported

撰写回答