将熊猫时间序列30分钟重新采样为9:15作为开始时间

时间:2018-11-05 06:08:54

标签: python pandas resampling

我正在尝试将OHLC数据重新采样到30分钟。市场数据始于9:15,我希望重新采样的时间为9:15-9:45,依此类推。但是我能够将数据重新采样为9:00-9:30

Paste Bin link to 1 min market data

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

As you see in the picture the start time is 9:00 and not 9:15...

3 个答案:

答案 0 :(得分:3)

还有另一种方法,可以使用resamplebase参数:

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

答案 1 :(得分:1)

解决方案是在resample中添加参数loffset

  

偏移量:timedelta

     

调整重新采样的时间标签

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

答案 2 :(得分:0)

尽管此处提供的答案符合预期,但必须注意, loffset 基本 deprecated since version 1.1.0。现在最好,最简单的方法是

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

这会将开始时间设置为数据框中可用的第一个时间戳。