问题描述
文档中get_price返回index应该是2015-01-30 13:57:00这样的格式
但是实际返回的是2005-01-04T10:00:00.000000000这样的格式,我哪里参数没有填对吗?
解决方案
您好!这不是您的参数填写错误,而是由于 Python 中 pandas 库底层数据结构展示方式导致的正常现象。
问题原因解析
在 JoinQuant 中,get_price 函数返回的数据类型是 pandas.DataFrame。这个 DataFrame 的行索引(index)是一个 pandas.DatetimeIndex 时间序列对象。
您看到的 2005-01-04T10:00:00.000000000 是 numpy.datetime64 或 pandas.Timestamp 对象的标准 ISO 8601 字符串显示格式(其中 T 是日期和时间的分隔符,后面跟着的是精确到纳秒的零)。文档中展示的 2015-01-30 13:57:00 只是为了方便阅读而做的简化展示。
解决方法
如果您希望将索引显示或转换为 YYYY-MM-DD HH:MM:SS 这种不带 T 和毫秒的纯字符串格式,可以使用 pandas 提供的 strftime 方法对索引进行格式化。
代码示例:
# 获取分钟级别数据
df = get_price('000001.XSHE', start_date='2015-01-30 13:50:00', end_date='2015-01-30 14:00:00', frequency='1m')
# 打印原始索引,会看到带有 T 和 000000000 的格式
print("原始格式:")
print(df.index)
# 将 DatetimeIndex 转换为指定格式的字符串
df.index = df.index.strftime('%Y-%m-%d %H:%M:%S')
# 再次打印,即可得到您想要的格式
print("\n转换后的格式:")
print(df)
注意:
在量化回测和数据处理中,保留原始的 DatetimeIndex 对象通常更有利于进行时间序列的切片、重采样(Resample)和对齐操作。建议仅在最终输出、打印日志或导出到 CSV 文件时,才将其转换为字符串格式。