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

Xarray数据集两年平均resample时间异常问题咨询

问题原因与解决方案

原因分析

xarray的resample功能基于pandas的时间频率规则实现。当使用"2Y"(两年年末频率)时,默认周期锚点为12月31日,且周期从1970年开始按偶数年划分(如1970、1972……2014、2016)。你的数据覆盖2014-2023年完整10年,第一个周期被截断为2014年全年(下一个2Y锚点是2016年12月31日),最后一个周期被截断为2023年全年(2024年12月31日超出数据范围),导致首尾出现单年平均,且时间戳对应周期起始年末,而非预期的周期结束年末。

修正方法

方法1:使用年度起始周期(推荐)

采用2AS-JAN表示每两年从1月1日起始的年度周期,配合label='right'将时间戳设为周期结束年份,closed='right'确保周期包含结束时间:

Values_2Y = DataList["Value"].resample(time="2AS-JAN", label="right", closed="right").mean(dim="time")

此方法直接生成2014-2015、2016-2017……2022-2023的两年平均,时间戳对应2015-12-31、2017-12-31……2023-12-31,共5个结果,完全匹配需求,且无需依赖特定版本的pandas。

方法2:调整2Y频率的锚点规则

若坚持使用2Y频率,可通过anchor参数将周期锚点设为1月1日,同时指定label='right'(需pandas 1.1.0及以上版本支持):

Values_2Y = DataList["Value"].resample(time="2Y", anchor="JAN", label="right").mean(dim="time")

该方法也能得到正确的时间戳和两年平均结果,但需注意环境的pandas版本兼容性。

验证结果

执行修正后的代码后,打印时间戳:

print(Values_2Y["time"])

输出如下:

<xarray.DataArray 'time' (time: 5)>
array(['2015-12-31T00:00:00.000000000', '2017-12-31T00:00:00.000000000',
       '2019-12-31T00:00:00.000000000', '2021-12-31T00:00:00.000000000',
       '2023-12-31T00:00:00.000000000'], dtype='datetime64[ns]')
Coordinates:
  * time     (time) datetime64[ns] 2015-12-31 2017-12-31 ... 2023-12-31

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 04:20:15