如何解析Stooq下载的5分钟K线TIME列格式并转换为时分格式
Stooq 5分钟K线TIME列编码规则
该TIME列是无分隔符的24小时制时分秒(HHMMSS)纯数字拼接格式,完全匹配你观察到的所有特征:
- 6位数字从左到右拆分规则:前2位为小时(HH,取值范围0023),中间2位为分钟(MM,取值范围0059),最后2位为秒(SS,5分钟周期的K线SS固定为00)
- 每间隔5分钟增量为500,本质是分钟数加5,对应数字部分增加
000500 - 千位(从右数第4位,即分钟的十位)累计到6时,代表分钟数满60,需要向小时位进1,同时分钟位归零,对应你提到的「千位数值达到6000时万位递增」的表现,比如
155500加5分钟得到160000,你给出的单日区间153000对应15:30、215500对应21:55,完全符合常规交易时段的范围。
Python转换实现方法
需结合DATE列生成完整时间序列对象,单独TIME列仅能表示当日时间。
依赖库
使用pandas处理批量数据,datetime处理时间逻辑。
批量转换完整时间序列代码
import pandas as pd # 读取本地Stooq数据文件 df = pd.read_csv("你的数据文件路径.csv") # 补全DATE、TIME列的前导0,避免位数不足导致解析错误 df['date_str'] = df['<DATE>'].astype(str).str.zfill(8) df['time_str'] = df['<TIME>'].astype(str).str.zfill(6) # 转换为datetime时间序列对象 df['full_datetime'] = pd.to_datetime(df['date_str'] + df['time_str'], format='%Y%m%d%H%M%S') # 输出小时:分钟格式的字符串 df['hour_minute'] = df['full_datetime'].dt.strftime('%H:%M')
单独转换TIME列的工具函数
如果不需要日期,仅需要把TIME值转为小时:分钟格式:
def stooq_time_to_hm(time_num): time_str = str(time_num).zfill(6) hour = int(time_str[:2]) minute = int(time_str[2:4]) return f"{hour:02d}:{minute:02d}" # 测试用例:输入153000返回'15:30',输入215500返回'21:55'
内容的提问来源于stack exchange,提问作者anonuser678
相关产品推荐
相关产品推荐

