Pandas按月groupby统计均值输出不存在月份的异常问题求助
问题根因
pd.to_datetime默认自动推断日期格式时,将你原始YYYY/DD/MM格式的日期误识别为YYYY/MM/DD,导致原本9月及之后的日期被错位解析成1-8月的日期,才会出现原始数据不存在的月份统计结果。
解决步骤
- 修正日期解析逻辑
调用pd.to_datetime时显式指定日期格式,避免自动推断出错:
df['Date'] = pd.to_datetime(df['Date'], format='%Y/%d/%m')
格式符说明:%Y对应4位年份,%d对应日期,%m对应月份,和你原始存储格式完全匹配。
- 可选:校验过滤有效数据
如果数据集存在超出有效起始日期的脏数据,可以额外加一层过滤:
# 仅保留2014年9月1日及之后的有效数据 df = df[df['Date'] >= '2014-09-01']
- 重新执行月度均值计算
日期解析正确后运行原分组统计逻辑即可得到符合预期的结果:
df1 = df.groupby(pd.PeriodIndex(df['Date'], freq="M"))[['I1', 'I2', 'I3', 'I4', 'I5', 'I6']].mean()
内容的提问来源于stack exchange,提问作者user3118602
相关产品推荐
相关产品推荐

