2

python - 如何计算每个组对应于Python和pandas中一个任意值的元素数量?

我的意思是 R 和 plyr 中的以下代码:

ddply(df, .(group), summarise, x=sum(ifelse(y==1, 1, 0)))

那么,我必须写出以下缺失的部分吗?

df.groupby(["groupA", "groupB"]).apply(lambda x: ....?)

谢谢。

4

2 回答 2

1

如果你想要所有 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
于 2013-11-07T03:38:22.207 回答
0

我不知道 R 和 plyr。希望以下内容可以帮助您通过对DataFrame列进行分组来计数。

df2 = pd.DataFrame({'count' : df.groupby(["groupA","groupB"]).size()}).reset_index()

您还可以对它们进行排序。

df2.sort_index(by=['count'], ascending=False)
于 2013-11-07T03:55:32.420 回答