如何将 pandas df 刻度数据重新采样为 5 分钟 OHLC 数据
How to resample pandas df tick data to 5 min OHLC data
我有一个 pandas df 'instr_bar',报价数据如下:
time
2016-07-29 16:07:24 5.72
2016-07-29 16:07:24 5.72
2016-07-29 16:07:24 5.72
2016-07-29 16:07:58 5.72
2016-07-29 16:07:58 5.72
2016-07-29 16:09:49 5.70
2016-07-29 16:09:50 5.73
2016-07-29 16:11:14 5.73
2016-07-29 16:11:14 5.73
2016-07-29 16:14:53 5.77
2016-07-29 16:14:53 5.77
2016-07-29 16:17:27 5.75
2016-07-29 16:17:43 5.76
2016-07-29 16:17:43 5.76
我想把它变成 5 分钟的 OHLC。在许多情况下,索引不是唯一的。
然后我使用以下代码:instr_bar = instr_bar.resample('5Min').ohlc()
然后我得到以下 df:
open high low close
time
2016-07-29 15:40:00 5.74 5.74 5.74 5.74
2016-07-29 15:45:00 NaN NaN NaN NaN
2016-07-29 15:50:00 5.75 5.75 5.75 5.75
2016-07-29 15:55:00 5.75 5.75 5.72 5.72
2016-07-29 16:00:00 5.72 5.72 5.72 5.72
2016-07-29 16:05:00 5.72 5.73 5.70 5.73
2016-07-29 16:10:00 5.73 5.77 5.73 5.77
2016-07-29 16:15:00 5.75 5.76 5.72 5.72
2016-07-29 16:20:00 NaN NaN NaN NaN
2016-07-29 16:25:00 5.72 5.72 5.72 5.72
问题 1:如何用最后观察到的值回填 NaN?
问题 2:我现在在 trading/opening 我们的 (09:00 - 16:30) 之外也有 NaN,我该如何摆脱它们?
尝试bfill():
instr_bar = instr_bar.resample('5T').ohlc().bfill()
或ffill():
instr_bar = instr_bar.resample('5T').ohlc().ffill()
取决于你想达到什么目的
如果你想按时间过滤行你可以使用between_time()方法:
instr_bar.between_time('09:00', '16:30')
一共:
instr_bar = instr_bar.resample('5T').ohlc().ffill().between_time('09:00', '16:30')
我有一个 pandas df 'instr_bar',报价数据如下:
time
2016-07-29 16:07:24 5.72
2016-07-29 16:07:24 5.72
2016-07-29 16:07:24 5.72
2016-07-29 16:07:58 5.72
2016-07-29 16:07:58 5.72
2016-07-29 16:09:49 5.70
2016-07-29 16:09:50 5.73
2016-07-29 16:11:14 5.73
2016-07-29 16:11:14 5.73
2016-07-29 16:14:53 5.77
2016-07-29 16:14:53 5.77
2016-07-29 16:17:27 5.75
2016-07-29 16:17:43 5.76
2016-07-29 16:17:43 5.76
我想把它变成 5 分钟的 OHLC。在许多情况下,索引不是唯一的。
然后我使用以下代码:instr_bar = instr_bar.resample('5Min').ohlc()
然后我得到以下 df:
open high low close
time
2016-07-29 15:40:00 5.74 5.74 5.74 5.74
2016-07-29 15:45:00 NaN NaN NaN NaN
2016-07-29 15:50:00 5.75 5.75 5.75 5.75
2016-07-29 15:55:00 5.75 5.75 5.72 5.72
2016-07-29 16:00:00 5.72 5.72 5.72 5.72
2016-07-29 16:05:00 5.72 5.73 5.70 5.73
2016-07-29 16:10:00 5.73 5.77 5.73 5.77
2016-07-29 16:15:00 5.75 5.76 5.72 5.72
2016-07-29 16:20:00 NaN NaN NaN NaN
2016-07-29 16:25:00 5.72 5.72 5.72 5.72
问题 1:如何用最后观察到的值回填 NaN?
问题 2:我现在在 trading/opening 我们的 (09:00 - 16:30) 之外也有 NaN,我该如何摆脱它们?
尝试bfill():
instr_bar = instr_bar.resample('5T').ohlc().bfill()
或ffill():
instr_bar = instr_bar.resample('5T').ohlc().ffill()
取决于你想达到什么目的
如果你想按时间过滤行你可以使用between_time()方法:
instr_bar.between_time('09:00', '16:30')
一共:
instr_bar = instr_bar.resample('5T').ohlc().ffill().between_time('09:00', '16:30')