在Python和pandas中如何统计每组中任意一个值对应的元素个数?
我指的是 R 和 plyr 中的以下代码:
ddply(df, .(group), summarise, x=sum(ifelse(y==1, 1, 0)))
那么,我必须写出以下缺失的部分吗?
df.groupby(["groupA", "groupB"]).apply(lambda x: ....?)
谢谢。
请您参考如下方法:
如果你想要所有 1 的简单总和,那么:
df.groupby(["groupA", "groupB"]).sum()
如果你想使用条件:
df.groupby('A').apply(lambda x: x[x['B'] > 0]['B'].sum())
或
df.groupby('A').agg(lambda x: np.sum(x[x > 0]))
例子:
>>> df = pd.DataFrame({'A':list('aaabbbbccc'), 'B':[1,1,0,1,1,0,0,1,0,0]})
>>> df.groupby('A').sum()
B
A
a 2
b 2
c 1
>>> df.groupby('A').apply(lambda x: x[x['B'] > 0]['B'].sum())
A
a 2
b 2
c 1
>>> df.groupby('A').agg(lambda x: np.sum(x[x > 0]))
B
A
a 2
b 2
c 1
