我生成了一个 5 分钟时间序列示例:
index = pd.date_range('1/1/2000', periods=10, freq='5T')
data=range(10)
ser = pd.Series(data, index=index)
它看起来像什么:
2000-01-01 00:00:00 0.0
2000-01-01 00:05:00 1.0
2000-01-01 00:10:00 2.0
2000-01-01 00:15:00 3.0
2000-01-01 00:20:00 4.0
2000-01-01 00:25:00 5.0
2000-01-01 00:30:00 6.0
2000-01-01 00:35:00 7.0
2000-01-01 00:40:00 8.0
2000-01-01 00:45:00 9.0
Freq: 5T, dtype: float64
我需要什么
我想将此时间序列转换为 15 分钟的时间序列,并将每个 15 分钟的值作为在该 15 分钟期间观察到的 5 分钟值的平均值,即
2000-01-01 00:15:00 2.0 # i.e. mean(1, 2, 3)
2000-01-01 00:30:00 5.0 # i.e. mean(4, 5, 6)
2000-01-01 00:45:00 8.0 # i.e. mean(7, 8, 9)
我尝试过的事情
如果我将这些数据重新采样到 15 分钟的桶中并调用平均值,我会得到:
ser.resample('15T').mean()
2000-01-01 00:00:00 1.0
2000-01-01 00:15:00 4.0
2000-01-01 00:30:00 7.0
2000-01-01 00:45:00 9.0
这不是我想要的计算方式。如果我将 close='right'
添加到重新采样调用中,我会更接近我想要的值,但时间戳不正确。
ser.resample('15T', closed='right').mean()
1999-12-31 23:45:00 0.0
2000-01-01 00:00:00 2.0
2000-01-01 00:15:00 5.0
2000-01-01 00:30:00 8.0
Freq: 15T, dtype: float64
有什么建议吗?
最佳答案
您可以在resample中使用label
参数,
ser.resample('15T', label='right', closed='right').mean()
这会将标签从重新采样窗口的左侧(默认)移动到右侧。这比我有些笨拙的评论更简洁。
关于python - 重新采样 Pandas 时间序列以获得 bin 名称的结束时间戳?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48703761/