[英]Resample pandas time series 30 mins for 9:15 as start time
我正在嘗試將 OHLC 數據重新采樣到 30 分鍾。 市場數據從 9:15 開始,我希望重新采樣的時間為 9:15-9:45 等等。 但我能夠將數據重新采樣為 9:00-9:30
pd.DataFrame(download_data).set_index('date'['close'].resample('30T').ohlc()
還有另一種方法,您可以使用resample
的base
參數:
pd.DataFrame(download_data).set_index('date'['close'].resample('30T', base=15).ohlc()
解決辦法是添加參數loffset
在resample
:
偏移量:時間增量
調整重采樣時間標簽
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.