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

如何按印度证券交易所交易时段将Pandas 5分钟股票数据聚合为10分钟K线

5分钟行情聚合为10分钟K线的正确实现方案

问题根因

你原来使用pd.Grouper(freq='10T')的方案是基于自然时间窗口分组,印度交易所收盘到次日开盘之间间隔远大于10分钟,因此前一交易日最后1条5分钟数据和下一交易日第1条数据会被划分到不同的自然时间窗口,无法合并。同时自然时间分组也无法兼容节假日、停盘带来的时间缺口场景。

解决思路

你需要的是按实际交易时序分组,每2条连续的5分钟数据合并为1条10分钟K线,完全忽略非交易时间的间隔。实现逻辑如下:

  1. 先按标的代码和交易时间对数据排序,保证时序正确
  2. 每个标的内部按行号每2行划分为一组,跨交易日的两条连续数据会被自动分到同一组
  3. 对每组按OHLCV的规则聚合即可

实现代码

import pandas as pd

# 第一步:按标的和交易时间升序排序,必须先做排序保证时序正确
df = df.sort_values(['script_id', 'date_time'], ignore_index=True)

# 第二步:按交易时序每2条一组聚合
df_f = df.groupby([
    'script_id',
    # 每个标的内部生成连续行号,每2行归为同一组
    df.groupby('script_id').cumcount() // 2
]).agg(
    date_time = ('date_time', 'first'),  # 取组内第一条的时间作为10分钟K的时间,符合你给出的预期
    open = ('open', 'first'),
    high = ('high', 'max'),
    low = ('low', 'min'),
    close = ('close', 'last'),
    volume = ('volume', 'sum')
).reset_index(drop=True)

效果验证

该方案会自动把前一交易日最后1条和下一交易日第1条5分钟数据分到同一组:

  • 分组后date_time取前一交易日最后一条的时间,符合你预期的2019-02-04 15:25:00
  • OHLCV的聚合规则完全匹配K线合成逻辑,计算结果和你给出的预期值完全一致
  • 完全兼容跨节假日、停盘等时间缺口场景,只要是连续的两条交易记录就会正常合并

如果需要将10分钟K的时间标记为组内最后一条的时间,只需要把date_time的聚合函数改为'last'即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 15:30:00