You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

1分钟OHLC数据重采样为15分钟间隔出现大量Null值问题求解

重采样后出现大量空值的原因
  • 核心原因是原始数据集的时间戳本身不连续:Pandas的resample逻辑会生成覆盖原始数据最早到最晚时间点的连续时间轴,只要某一个15分钟时间槽内没有匹配的原始数据,聚合后的结果就会是空值。
  • 你测试1分钟重采样得到的行数少于原始数据,说明原始数据还存在重复时间戳的问题,进一步加剧了时间槽匹配失败的概率。
  • 从给出的统计结果看,1年数据里有效有交易的15分钟区间是24919个,剩下的10121个时间槽都属于无交易的空白时段,所以聚合后返回空值。
修复方案

根据使用场景,可以选择两种处理方式:

方案1:仅保留有交易数据的15分钟区间

如果不需要连续的时间轴,直接过滤掉空值行即可:

dff = df.resample('15min').agg({
    'Open': 'first',
    'High': 'max',
    'Low': 'min',
    'Close': 'last'
}).dropna(subset=['Open', 'High', 'Low', 'Close'])

处理后得到的24919行就是所有有交易数据的15分钟OHLC结果,不会有空值。

方案2:需要连续时间轴,填充缺失区间

如果你做回测等场景需要连续的15分钟时间轴,可以先补全原始1分钟数据的空缺,再做重采样,通用做法是缺失的分钟数据用上一个有效值填充:

# 第一步:先把原始数据转为连续1分钟时间轴,重复的时间戳取最后一条,缺失的时间槽用前值填充
df_1min_complete = df.resample('1min').last().ffill()
# 第二步:再对连续的1分钟数据做15分钟重采样
dff = df_1min_complete.resample('15min').agg({
    'Open': 'first',
    'High': 'max',
    'Low': 'min',
    'Close': 'last'
})

注意:如果是外汇、股票这类有固定休市时段的产品,不要直接填充休市时段的空缺,建议先过滤掉休市的时间区间,再做填充和重采样,避免引入无效数据。

内容的提问来源于stack exchange,提问作者Stanisla Vavrika

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 12:15:03