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

Python Pandas将小时级数据转换为多年月均降水汇总方法

解决方案

你的原有代码存在两处逻辑偏差:一是计算月度值时误用了平均值函数,没有统计月降水总量;二是没有做跨年份的同月份二次聚合。按以下两步实现即可得到目标结果:

  • 先将小时级数据按月度重采样,使用sum()聚合得到每个自然月的累计降水总量
  • 基于月度累计值,按月份(1-12)分组,计算所有年份同月份的累计降水平均值

完整代码

首先先过滤掉超出2013-2020时间范围的异常数据,避免边缘值干扰:

# 筛选目标时间范围数据
df = df.loc['2013-01-01':'2020-12-31 23:00:00']

# 第一步:聚合得到每年各自然月的降水总量
monthly_total_precip = df.resample('M')['tp'].sum()

# 第二步:按月份分组计算多年同月份平均降水总量
result = monthly_total_precip.groupby(monthly_total_precip.index.month).mean()

# 转换为标准DataFrame格式,优化索引可读性
result = result.to_frame(name='avg_total_tp').rename_axis('month')

结果说明

  • 最终输出的result共12行,索引值1到12分别对应公历1月到12月
  • 字段avg_total_tp的数值就是2013-2020年统计周期内,对应月份累计降水总量的多年平均值,完全匹配你的需求

原有代码问题说明

你之前使用的df.resample('M').mean()逻辑不符合需求的原因:

  • 聚合函数使用mean(),计算的是单月内所有小时降水的算术平均值,不是你需要的月累计降水总量
  • 仅完成了时间粒度从小时到单月的转换,没有做跨年份的同月份聚合,因此输出为97行的分年月结果,不是最终需要的12行多年月平均结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 11:30:42