Pandas重采样1分钟OHLC数据时起始时间偏移问题求助
解决4分钟OHLC重采样起始时间偏移问题
要解决从09:15开始的4分钟重采样偏移问题,核心是指定重采样的基准起始时间,以下是具体实现方案:
1. 确保时间索引格式正确
首先确认你的DataFrame索引是datetime64类型,若不是先转换:
import pandas as pd # 转换索引为datetime类型 df.index = pd.to_datetime(df.index)
2. 使用origin参数指定重采样起始点
利用resample的origin参数直接指定基准时间为09:15,这样重采样区间会从该时间开始划分:
# 重采样为4分钟OHLC,指定起始基准为09:15 resampled_df = df.resample('4min', origin='09:15').agg({ 'Open': 'first', # 区间第一个开盘价 'High': 'max', # 区间最高价 'Low': 'min', # 区间最低价 'Close': 'last' # 区间最后一个收盘价 })
生成的时间戳会是09:15、09:19、09:23...完全符合需求。
3. 兼容旧版本Pandas的方案(使用base参数)
如果你的Pandas版本低于0.24(origin参数是0.24新增),可以用base参数替代:
# base=15 表示以分钟数15为基准划分4分钟区间 resampled_df = df.resample('4min', base=15).agg({ 'Open': 'first', 'High': 'max', 'Low': 'min', 'Close': 'last' })
4. 过滤非交易时间区间(可选)
如果数据包含非目标时间的区间,可以用between_time过滤:
# 保留09:15到收盘时间的区间(示例为15:30) resampled_df = resampled_df.between_time('09:15', '15:30')
偏移原因说明
默认情况下,resample会以数据的第一个时间戳或整点为基准划分区间,若你的数据起始时间晚于09:15,或默认基准未对齐09:15,就会导致起始时间偏移1分钟。通过指定origin或base参数,强制对齐到09:15即可解决。
内容的提问来源于stack exchange,提问作者Mintoo
相关产品推荐
相关产品推荐

