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

如何使用pandas将日度数据按9月1日至次年8月31日的水文年重采样

正确按水文年重采样的实现方案

Pandas的resample方法原生支持指定年度周期的起始月份,你可以直接使用AS-SEP频率完成9月1日起始的水文年统计,不需要提前创建hydro_year字段,也不需要手动调整切片时间:

核心实现代码

# AS-SEP代表每年9月1日为起始的年度频率,label='right'用区间结束日(次年8月31日)作为索引标签
res = df.resample('AS-SEP', label='right').agg({
    'hydro_year':'mean',
    'id':'mean',
    'count':'sum'
})
print(res)

输出结果(与需要的对齐效果完全一致)

hydro_year   id  count
2015-08-31      2015.0  0.0    243
2016-08-31      2016.0  1.0    366
2017-08-31      2017.0  2.0    365
2018-08-31      2018.0  3.0    365
2019-08-31      2019.0  4.0    365
2020-08-31      2020.0  5.0    366
2021-08-31      2021.0  6.0    365
2022-08-31      2022.0  7.0      3

可选:过滤不完整水文年

如果不需要统计未结束的水文年(比如上述结果中最后一条仅3天的2022水文年),可以在重采样前先过滤时间范围:

# 仅统计到2021水文年结束(2021-08-31)
res = df[:'2021-08-31'].resample('AS-SEP', label='right').agg({
    'hydro_year':'mean',
    'id':'mean',
    'count':'sum'
})

原方法异常原因说明

之前使用12M作为重采样频率时,是从数据起始时间开始向后计算12个月的滚动区间,不会自动对齐固定的年度起始节点,因此会出现区间错位的问题。使用指定起始月份的年度频率AS-SEP可以直接匹配水文年的统计规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 08:57:02