簡體   English   中英

9:15 重新采樣熊貓時間序列 30 分鍾作為開始時間

[英]Resample pandas time series 30 mins for 9:15 as start time

我正在嘗試將 OHLC 數據重新采樣到 30 分鍾。 市場數據從 9:15 開始,我希望重新采樣的時間為 9:15-9:45 等等。 但我能夠將數據重新采樣為 9:00-9:30

粘貼 Bin 鏈接到 1 分鍾的市場數據

pd.DataFrame(download_data).set_index('date'['close'].resample('30T').ohlc()

正如您在圖片中看到的,開始時間是 9:00 而不是 9:15...

還有另一種方法,您可以使用resamplebase參數:

pd.DataFrame(download_data).set_index('date'['close'].resample('30T', base=15).ohlc()

解決辦法是添加參數loffsetresample

偏移量:時間增量

調整重采樣時間標簽

df = (pd.DataFrame(download_data)
        .set_index('date')['close']
        .resample('30T', loffset='15min')
        .ohlc())
print (df)

                               open      high      low     close
date                                                            
2018-11-05 09:15:00+05:30  25638.25  25641.85  25589.3  25630.00
2018-11-05 09:45:00+05:30  25622.00  25745.00  25622.0  25714.85
2018-11-05 10:15:00+05:30  25720.05  25740.00  25692.9  25717.00
2018-11-05 10:45:00+05:30  25698.30  25744.75  25667.9  25673.95
2018-11-05 11:15:00+05:30  25680.30  25690.45  25642.9  25655.90

and are deprecated since version 1.1.0 .盡管此處提供的答案按預期工作,但必須注意, 自 1.1.0 版以來不推薦使用 現在最好和最簡單的方法是

pd.DataFrame(download_data).set_index('date'['close']).resample('30T', origin='start').ohlc() 

這會將開始時間設置為數據幀中可用的第一個時間戳。

@TFA 使用 origin='start' 可能不是那么有用,尤其是。 如果我們的開始時間不符合從上午 9:15 開始的規則,例如,如果我們嘗試將 1 分鍾數據轉換為 15 分鍾,並且我們提供上午 9:37 的數據,則 15 分鍾蠟燭將從 9 開始: 37 am,這不是我們需要的。

我能找到的更好的解決方案是使用origin = <timestamp> ,所以像origin = datetime.fromisoformat('1970-01-01 09:15:00+05:30')這樣的東西就很神奇。

整體代碼:

pd.DataFrame(download_data).set_index('date'['close']).resample('30T', origin=datetime.fromisoformat('1970-01-01 09:15:00+05:30')).ohlc() 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM