Pandas Groupby 应用函数计数大于零的值
使用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