Pandas时间序列DataFrame重采样9分钟周期时间偏移问题
问题原因
这是因为pandas的resample方法默认从午夜0点开始按给定周期划分时间区间。比如9分钟周期的话,区间会是00:00-00:09、00:09-00:18……以此类推。你的数据起始时间是09:30:00,往前找最近的9分钟区间起点就是09:27:00(9×63=567分钟,即9小时27分),所以09:30的数据会被归入09:27开头的区间。
而5、6分钟周期能正常对齐,是因为09:30刚好是它们的整数倍起点:5×114=570分钟(9小时30分),6×95=570分钟,所以区间刚好从09:30开始划分。
解决方法
修改resample调用时的参数,指定origin为数据起始时间(或者用origin='start'让区间从数据的第一个时间点开始),就能让区间从09:30:00开始:
修改后的核心代码段:
data = data.resample(f"{timeframe}T", origin='start').agg({"Open": "first", "High": "max", "Low": "min", "Close": "last"})
如果想固定从每天的09:30开始划分(不受数据起始点影响),可以直接指定具体时间作为origin:
data = data.resample(f"{timeframe}T", origin='2022-06-16 09:30:00').agg(...)
另外注意你代码里的一个小疏漏:data.drop(columns=['index'])这行没有赋值给data,应该改成data = data.drop(columns=['index']),否则index列不会被实际删除。
内容的提问来源于stack exchange,提问作者user22544082
相关产品推荐
相关产品推荐

