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

pandas 1分钟股票时序数据重采样为5分钟时出现非交易时段空值问题求助

股票日内数据重采样过滤非交易时段的解决方案

pandas默认resample方法会生成连续时间轴,因此会包含休市时段的空值行,可通过以下两种方案实现仅交易时段重采样:

方案1:按交易日分组逐天重采样(推荐)

该方法将每日交易数据单独分组处理,重采样范围严格限制在当日交易时段内,不会跨休市时段生成空索引,不需要手动配置交易时间,通用性更强。

import yfinance as yf
import pandas as pd

# 原始获取1分钟NSEI数据代码
n = yf.download('^nsei', period= '5d', interval= '1m')

# 按日期分组,对每个交易日单独执行5分钟重采样
n_5min = n.groupby(n.index.date, group_keys=False).apply(
    lambda df: df.resample('5T').agg(
        {'Open':'first', 'High':'max', 'Low':'min', 'Close':'last', 'Adj Close':'last', 'Volume':'sum'}
    )
)

# 过滤少量因临时停盘等情况产生的空值
n_5min = n_5min.dropna()

方案2:重采样后按固定交易时段过滤

如果对应市场交易时段固定(印度NSE交易时段为当地时间9:15-15:30),可先全局重采样后筛选符合交易时间的行,操作更简便:

import yfinance as yf
import pandas as pd

n = yf.download('^nsei', period= '5d', interval= '1m')

# 先执行全局5分钟重采样
n_5min = n.resample('5T').agg(
    {'Open':'first', 'High':'max', 'Low':'min', 'Close':'last', 'Adj Close':'last', 'Volume':'sum'}
)

# 仅保留交易时段的行,同时过滤周末等非交易日空值
n_5min = n_5min.between_time('09:15', '15:30').dropna()

注意:该方案需要确保数据索引的时区和交易时段的时区一致,yfinance返回的^NSEI数据默认带Asia/Kolkata时区,可直接适配上述时间范围。

内容的提问来源于stack exchange,提问作者Raj Nair

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 12:24:04