Skip to main content
 首页 » 编程设计

python之统计pandas中匹配元素的个数

2025年05月04日12mfryf

在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