Skip to main content
 首页 » 编程设计

python之pandas groupby 计算一列中零的数量

2025年05月04日10lyj

我有一个数据框,例如:

Date             B           C    
20.07.2018      10           8 
20.07.2018       1           0 
21.07.2018       0           1 
21.07.2018       1           0 

如何计算每个日期每列的零值和非零值? 使用 .sum() 对我没有帮助,因为它会对非零值求和。

例如:零值的预期输出:

Date          B         C 
20.07.2018    0         1 
21.07.2018    1         1 

请您参考如下方法:

我相信需要DataFrameGroupBy.agg通过 0 和 sum 进行比较:

a) 数数零值:

df1 = df.groupby('Date').agg(lambda x: x.eq(0).sum()) 
print (df1) 
 
            B  C 
Date             
20.07.2018  0  1 
21.07.2018  1  1 

b) 数数。非零值:

df2 = df.groupby('Date').agg(lambda x: x.ne(0).sum()) 
print (df2) 
            B  C 
Date             
20.07.2018  2  1 
21.07.2018  1  1 

提高性能的另一个想法是创建 DatetimeIndex,comapre 列并最后使用 sum 每个级别 (DatetimeIndex):

df1 = df.set_index('Date').eq(0).sum(level=0) 
print (df1) 
            B  C 
Date             
20.07.2018  0  1 
21.07.2018  1  1 
 
df2 = df.set_index('Date').ne(0).sum(level=0) 
print (df2) 
            B  C 
Date             
20.07.2018  2  1 
21.07.2018  1  1