我有每周一小时的外汇数据,我需要在周一至周四下午 12:00 和周五晚上 21:00 重新采样到“1D”或“24hr”箱中,每周总共 5 天:
Date rate
2020-01-02 00:00:00 0.673355
2020-01-02 01:00:00 0.67311
2020-01-02 02:00:00 0.672925
2020-01-02 03:00:00 0.67224
2020-01-02 04:00:00 0.67198
2020-01-02 05:00:00 0.67223
2020-01-02 06:00:00 0.671895
2020-01-02 07:00:00 0.672175
2020-01-02 08:00:00 0.672085
2020-01-02 09:00:00 0.67087
2020-01-02 10:00:00 0.6705800000000001
2020-01-02 11:00:00 0.66884
2020-01-02 12:00:00 0.66946
2020-01-02 13:00:00 0.6701600000000001
2020-01-02 14:00:00 0.67056
2020-01-02 15:00:00 0.67124
2020-01-02 16:00:00 0.6691699999999999
2020-01-02 17:00:00 0.66883
2020-01-02 18:00:00 0.66892
2020-01-02 19:00:00 0.669345
2020-01-02 20:00:00 0.66959
2020-01-02 21:00:00 0.670175
2020-01-02 22:00:00 0.6696300000000001
2020-01-02 23:00:00 0.6698350000000001
2020-01-03 00:00:00 0.66957
所以一周中每一天的小时数是不均匀的,即“星期一”= 00:00:00 星期一到 12:00:00 星期一,“星期二”(还有星期三,星期四)= 即 13:00: 00 周一至周二 12:00:00,周五 = 13:00:00 至 21:00:00
在尝试找到解决方案时,我发现 base 现在已弃用,并且 offset/origin 方法未按预期工作,可能是由于每天的行数不均匀:
df.rate.resample('24h', offset=12).ohlc()
我花了几个小时试图找到解决方案
如何将每个 12:00:00 时间戳之间的所有数据行简单地放入 ohlc() 列?
所需的输出如下所示:
Out[69]:
open high low close
2020-01-02 00:00:00.0000000 0.673355 0.673355 0.673355 0.673355
2020-01-03 00:00:00.0000000 0.673110 0.673110 0.668830 0.669570
2020-01-04 00:00:00.0000000 0.668280 0.668280 0.664950 0.666395
2020-01-05 00:00:00.0000000 0.666425 0.666425 0.666425 0.666425