我懷疑很多人的數據已經遇到此問題的時間序列,和熊貓的工作似乎並沒有提供一個簡單的解決方案結束(尚未!):大熊貓時間序列重新採樣某一天
假設:
- 您有一系列收盤價日常數據的時間序列,按日期(日期)進行了索引。
- 今天是19JUN。最後關閉數據值是18JUN。
- 您想要將日常數據重新採樣到OHLC柱,並以某個給定的頻率(假設M或2M)結束18JUN。
所以對於M頻率,最後一棒是19MAY-18JUN,前一個19APR-18MAY,等等...
ts.resample('M', how='ohlc')
會做重採樣,但 'M' 是「end_of_month '期間,所以結果會給予2014-05的整整一個月和2014-06的2週期限,所以你最後的酒吧不會是'月度酒吧'。這不是我們想要的!
由於2M
頻率,考慮到我的樣本時間序列,我的測試給了我最後一個小節標籤爲2014-07-31(以前標籤爲2014-05-31),這是相當誤導性的,因爲沒有關於JUL的數據。 ..所謂的最後2個月酒吧再次只是覆蓋最近的2周。
正確DatetimeIndex容易與創建:
pandas.date_range(end='2014-06-18', freq='2M', periods=300) + datetime.timedelta(days=18)
(熊貓文檔更喜歡通過
pandas.date_range(end='2014-06-18', freq='2M', periods=300) + pandas.tseries.offsets.DateOffset(days=18)
做同樣的事情,但我的測試表明,該方法雖然較爲「pandaïc」是2x更慢!)
無論採用哪種方法,我們都無法將正確的DatetimeIndex應用於ts.resample()。
似乎熊貓開發團隊(Date ranges in Pandas)已經意識到這個問題,但與此同時,您如何解決這個問題才能讓OHLC的滾動頻率在時間序列的最後一天處於停滯狀態?
看來,如果day_anchor是>例如28(用於FEB最後一天)失敗,有一個「ValueError異常:白天是超出範圍的一個月」 – comte