计算pandas中匹配元素的数量

时间:2013-11-07 00:59:10

标签: python pandas

如何计算与每个组相关的Python和panda中任意值对应的元素数量?

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

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

那么,我有什么要写出以下缺失的部分?

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

感谢。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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

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

进一步你可以对它们进行排序。

df2.sort_index(by=['count'], ascending=False)