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

时间序列Resample重采样结果数据异常问题咨询

时间序列Resample重采样结果数据异常问题咨询

嗨,我来帮你拆解一下这个问题~

首先咱们先明确你遇到的核心困惑:你预期2023-01-01 01:00:00+01:00对应的重采样均值应该是162.89,但实际得到的是90.349997,这是因为你对resample('h', label='right')的分组逻辑理解有偏差哦。

咱们先把原始数据和重采样的分组对应关系理清楚:

原始数据(30分钟间隔)

2022-12-31 22:00:00+01:00;7.500000
2022-12-31 22:30:00+01:00;8.200000
2022-12-31 23:00:00+01:00;10.800000
2022-12-31 23:30:00+01:00;9.500000
2023-01-01 00:00:00+01:00;12.300000
2023-01-01 00:30:00+01:00;168.399994
2023-01-01 01:00:00+01:00;157.399994
2023-01-01 01:30:00+01:00;73.199997
2023-01-01 02:00:00+01:00;59.700001
2023-01-01 02:30:00+01:00;74.000000

resample('h', label='right')的分组逻辑

当你设置label='right'时,重采样的每个标签代表的是该采样区间的结束时间,对应的区间是「前一个整小时到当前整小时」(默认左闭右开),所以每个标签对应的原始数据和计算结果是:

  • 2022-12-31 23:00:00+01:00:包含22:00、22:30的两个数据,均值为(7.5+8.2)/2=7.85,和你得到的结果一致
  • 2023-01-01 00:00:00+01:00:包含23:00、23:30的两个数据,均值为(10.8+9.5)/2=10.15,结果正确
  • 2023-01-01 01:00:00+01:00:包含00:00、00:30的两个数据,均值为(12.3+168.399994)/2=90.349997,这就是你实际得到的数值
  • 2023-01-01 02:00:00+01:00:包含01:00、01:30的两个数据,均值应该是(157.399994+73.199997)/2≈115.299995,你给出的结果15.299995应该是笔误啦
  • 2023-01-01 03:00:00+01:00:包含02:00、02:30的两个数据,均值为(59.7+74)/2=66.85,结果正确

你预期的162.89对应的是什么?

你计算的162.89是(168.399994+157.399994)/2≈162.89,这两个数据是00:30和01:00的数值,它们默认会被分到不同的整小时区间:00:30属于00:00-01:00区间(标签01:00),01:00属于01:00-02:00区间(标签02:00)。

如果想让这两个数据被分到同一个1小时区间,你可以调整重采样的偏移设置,让采样区间从每个小时的30分开始:

df = df.resample('h', label='right', offset='30min').mean()

这样01:00:00的标签对应的区间就是00:30-01:30,包含00:30和01:00的两个数据,均值就是你预期的162.89啦~

备注:内容来源于stack exchange,提问作者user16511234

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 13:04:29