You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何统计带DatetimeIndex的DataFrame列中每月非零条目数?

解决方法

问题出在count()的逻辑上:它统计的是每个分组里非缺失值的总条目数,而你的DataFrame每个日期都有数据,所以结果就是当月的总天数,而非你需要的非零条目数。

你可以用以下两种方式实现需求:

方法一:先筛选非零行再分组统计

先过滤出值不为0的行,再按月份分组统计数量:

# 假设你的列没有命名,用iloc[:,0]取第一列;如果有列名,比如叫data,换成df['data']
df[df.iloc[:, 0] != 0].groupby(df.index.month).size()

size()会返回每个分组的行数,也就是每月非零条目的数量。

方法二:利用布尔值求和(更高效)

先将每个值转换为「是否非零」的布尔值(True代表非零,False代表零),再按月份分组求和(True会被视为1,False视为0,求和结果就是非零数量):

df.iloc[:, 0].ne(0).groupby(df.index.month).sum()

如果想要索引显示月份名称(比如"1月"或"January"),可以改用index.month_name()分组:

df.iloc[:, 0].ne(0).groupby(df.index.month_name()).sum()

内容的提问来源于stack exchange,提问作者Murilo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 14:15:27