我有一个 10 分钟频率数据的 pandas 时间序列,需要找到每个 24 小时周期内的最大值。然而,这个 24 小时周期需要从每天早上 5 点开始——而不是 pandas 假定的默认午夜。
我一直在查看 DateOffset
,但到目前为止我在绘制空白。我可能期望类似于 pandas.tseries.offsets.Week(weekday=n)
的东西,例如pandas.tseries.offsets.Week(hour=5)
,但据我所知这不受支持。
我可以通过首先对数据进行 shift
来解决这个问题,但它不直观,甚至在一周后回到相同的代码我也无法理解移位方向!
任何更优雅的想法将不胜感激。
base
关键字可以解决这个问题(参见 docs ):
s.resample('24h', base=5)
例如:
In [35]: idx = pd.date_range('2012-01-01 00:00:00', freq='5min', periods=24*12*3)
In [36]: s = pd.Series(np.arange(len(idx)), index=idx)
In [38]: s.resample('24h', base=5)
Out[38]:
2011-12-31 05:00:00 29.5
2012-01-01 05:00:00 203.5
2012-01-02 05:00:00 491.5
2012-01-03 05:00:00 749.5
Freq: 24H, dtype: float64