我有一个10分钟频率数据的熊猫时间序列,需要找到每个24小时内的最大值。然而,这个24小时的时间段需要在凌晨5点开始 - 而不是大熊猫假设的默认午夜。
我一直在查看DateOffset
,但到目前为止我正在画空白。我可能期望类似于pandas.tseries.offsets.Week(weekday=n)
的东西,例如pandas.tseries.offsets.Week(hour=5)
,但据我所知,这不受支持。
我可以先通过shift
数据做一个令人讨厌的工作,但它不直观,甚至在一周之后回到相同的代码我遇到了绕着移位方向的问题!
非常感谢任何更优雅的想法。
答案 0 :(得分:14)
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
答案 1 :(得分:1)
我刚刚发现了一个问题,这个问题以前没有出现在Google或Stack Overflow上:
Resample hourly TimeSeries with certain starting hour
这使用了base参数,它看起来像是Wes McKinney的Python for Data Analysis之后的补充。我已经给出了参数,似乎可以解决这个问题。