首页 > 解决方案 > 重采样数据帧时的偏移问题

问题描述

我试图以 1 小时的偏移量每 3 小时重新采样一次数据集。当我尝试它时,时间会偏移 1 小时,并根据需要每 3 小时设置一次,但这些值只是重新采样并且不考虑偏移量

我的尝试看起来像这样

df = pd.read_excel('Raw Data.xlsx')
df['TIME'] = pd.to_datetime(df['TIME'])
df['DATA'] = df['DATA'].astype(float) * 1000
hourly = df.resample('H', on='TIME').mean()
thirdly = df.resample('3H', loffset = '1H', on='TIME').mean()

如图所示,我已经能够进行每小时设置,但是当我尝试使用偏移量创建 3 小时重新采样时,我得到了这个结果

                    DATA
TIME    
2019-07-29 22:00:00 10.777778
2019-07-30 01:00:00 14.055556
2019-07-30 04:00:00 13.333333
2019-07-30 07:00:00 8.722222
2019-07-30 10:00:00 7.333333
...

当我的原始数据看起来像这样

TIME    DATA
0   2019-07-29 22:33:34 11.0
1   2019-07-29 22:43:34 10.0
2   2019-07-29 22:53:34 10.0
3   2019-07-29 23:03:34 10.0
4   2019-07-29 23:13:34 10.0
5   2019-07-29 23:23:34 11.0
6   2019-07-29 23:33:34 11.0
7   2019-07-29 23:43:34 12.0
8   2019-07-29 23:53:34 12.0
9   2019-07-30 00:03:34 11.0
10  2019-07-30 00:13:34 12.0
11  2019-07-30 00:23:34 13.0
12  2019-07-30 00:33:34 13.0
13  2019-07-30 00:43:34 14.0
14  2019-07-30 00:53:34 14.0
...

当您手动计算时,您可以看到它所取的平均值实际上是从 21:00-24:00 而不是 22:00-1:00,尽管我在重新采样中进行了偏移。我该如何纠正?

标签: pythonpandasdataframedatetime

解决方案


您需要使用参数base而不是loffset仅调整标签。

尝试:

thirdly = df.resample('3H', base = 1, on='TIME').mean()

推荐阅读