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

如何将5分钟OHLC数据转换为每小时15分起始的小时级数据?

调整Pandas重采样实现15分起始的小时级OHLC转换

要将5分钟间隔的OHLC数据转换为9:15-10:15、10:15-11:15这类以每小时15分为起始的小时级数据,只需在原代码的resample()方法中添加origin参数,指定重采样窗口的起始基准即可。

修改后的完整代码

import pandas as pd

df = pd.read_csv('data.csv')
df['Datetime'] = pd.to_datetime(df['Datetime'])
df.set_index('Datetime', inplace=True)

# 动态计算重采样起始基准:取数据中最早时间所在小时的15分时刻
origin_time = df.index.min().floor('H') + pd.Timedelta(minutes=15)

# 按小时重采样,指定起始基准,保持原聚合规则不变
hourly_data = df.resample('H', origin=origin_time).agg({
    'Open': 'first',
    'High': 'max',
    'Low': 'min',
    'Close': 'last',
    'Volume': 'sum'
})

关键说明

  • origin参数用于定义重采样窗口的起始时间基准:通过df.index.min().floor('H')获取数据中最早时间所在的整点,再加15分钟,确保所有小时窗口从小时+15分开始。
  • 聚合规则与原代码一致:每个窗口取第一个Open、最高High、最低Low、最后一个Close,并对Volume求和。
  • 如果你的数据每天固定从9:15开始,也可以直接写origin='09:15'替代动态计算的origin_time,但动态计算方式更适配不同日期的起始场景。

验证示例数据

以你提供的data.csv为例,第一个重采样窗口2015-02-03 09:15:00+05:30会包含9:15到10:10的所有5分钟数据,计算结果为:

  • Open: 200.4(9:15的开盘价)
  • High: 202.85(10:10的最高价)
  • Low: 199.1(9:15的最低价)
  • Close: 202.8(10:10的收盘价)
  • Volume: 所有对应时段的成交量总和

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 10:17:35