python - 如何使用每小时的值对 pandas 系列进行重新采样

标签 python pandas time-series resampling

我有以 10 分钟频率记录的时间序列数据。我想以一小时为间隔对这些值进行平均。但为此,我想在小时前取 3 个值,在小时后取 2 个值,取平均值并将该值分配给确切的小时时间戳。

例如,我有这个系列

index = pd.date_range('2000-01-01T00:30:00', periods=63, freq='10min')
series = pd.Series(range(63), index=index)
series
2000-01-01 00:30:00     0
2000-01-01 00:40:00     1
2000-01-01 00:50:00     2
2000-01-01 01:00:00     3
2000-01-01 01:10:00     4
2000-01-01 01:20:00     5
2000-01-01 01:30:00     6
2000-01-01 01:40:00     7
2000-01-01 01:50:00     8
2000-01-01 02:00:00     9
2000-01-01 02:10:00    10
                       ..
2000-01-01 08:50:00    50
2000-01-01 09:00:00    51
2000-01-01 09:10:00    52
2000-01-01 09:20:00    53
2000-01-01 09:30:00    54
2000-01-01 09:40:00    55
2000-01-01 09:50:00    56
2000-01-01 10:00:00    57
2000-01-01 10:10:00    58
2000-01-01 10:20:00    59
2000-01-01 10:30:00    60
2000-01-01 10:40:00    61
2000-01-01 10:50:00    62
Freq: 10T, Length: 63, dtype: int64

所以,如果我这样做

series.resample('1H').mean()
2000-01-01 00:00:00     1.0
2000-01-01 01:00:00     5.5
2000-01-01 02:00:00    11.5
2000-01-01 03:00:00    17.5
2000-01-01 04:00:00    23.5
2000-01-01 05:00:00    29.5
2000-01-01 06:00:00    35.5
2000-01-01 07:00:00    41.5
2000-01-01 08:00:00    47.5
2000-01-01 09:00:00    53.5
2000-01-01 10:00:00    59.5
Freq: H, dtype: float64

第一个值是 0、1、2 的平均值,分配给 0 小时,第二个值是 1:00:00 到 1:50:00 的平均值,分配给 1:00:00,依此类推上。

我想要的是第一个平均值以 1:00:00 为中心,使用从 00:30:00 到 01:20:00 的值计算,第二个平均值以 02:00:00 为中心,从 01:30 计算:00 到 02:20:00 等等...

最好的方法是什么?

谢谢!

最佳答案

您应该能够通过以下方式做到这一点:

series.index = series.index - pd.Timedelta(30, unit='m')
series_grouped_mean = series.groupby(pd.Grouper(freq='60min')).mean()
series_grouped_mean.index = series_grouped_mean.index + pd.Timedelta(60, unit='m')
series_grouped_mean

我得到了:

2000-01-01 01:00:00     2.5
2000-01-01 02:00:00     8.5
2000-01-01 03:00:00    14.5
2000-01-01 04:00:00    20.5
2000-01-01 05:00:00    26.5
2000-01-01 06:00:00    32.5
2000-01-01 07:00:00    38.5
2000-01-01 08:00:00    44.5
2000-01-01 09:00:00    50.5
2000-01-01 10:00:00    56.5
2000-01-01 11:00:00    61.0
Freq: H, dtype: float64

关于python - 如何使用每小时的值对 pandas 系列进行重新采样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56660797/

相关文章:

r - 使用 facet_wrap 在 ggplot2 中绘制时间序列数据

python - django 设置 session 变量直到一天结束

python - 为什么事情是[:][0] equal to thing[0][:]?

python - 类方法采用 1 个位置参数,但给出了 2 个

python - 添加公式后使用 pandas/xlsxwriter 对列进行排序

pandas - 使用 Pandas 过滤和比较日期

python - 可以将边缘列表导入 igraph python

Python pandas 将重复时间戳更改为唯一时间戳

r - 使用来自预测的准确度()测量 VAR 准确度

python - python 中的 ARIMA 预测