python - 如何计算每个组对应于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
我不知道 R 和 plyr。希望以下内容可以帮助您通过对DataFrame
列进行分组来计数。
df2 = pd.DataFrame({'count' : df.groupby(["groupA","groupB"]).size()}).reset_index()
您还可以对它们进行排序。
df2.sort_index(by=['count'], ascending=False)