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

使用pandas转换特殊格式时间字符串时报KeyError如何解决?

问题原因

你调用pd.read_csv时指定了index_col=0,也就是将第一列timestamp设置为了DataFrame的索引,因此常规列列表中已经不存在timestamp这一列,直接按列名访问自然会抛出KeyError。

另外你当前写的时间转换格式也存在匹配不全的问题:原始时间格式包含秒、微秒段,仅写%Y-%m-%dD%H:%M会在后续解析时报格式不匹配错误。


解决方法

你可以根据自己的使用场景二选一:

方法1:保留timestamp为索引,直接转换索引格式

# 直接对索引做时间格式转换,补全匹配原始数据的格式规则
tick_data.index = pd.to_datetime(tick_data.index, format="%Y-%m-%dD%H:%M:%S.%f")
# 如果后续需要把timestamp变回普通列,额外执行下面这行即可
# tick_data = tick_data.reset_index()

方法2:读取时不指定索引,后续单独处理时间列

修改pd.read_csv参数去掉index_col=0,读取完成后再处理时间列、按需设置索引:

# 读取时不指定索引,timestamp会作为普通列保留
tick_data = pd.read_csv('trade.csv', 
                        names=['timestamp', 'symbol', 'side', 'size', 'price',
                               'tickDirection', 'trdMatchID', 'grossValue',
                               'homeNotional', 'foreignNotional'], 
                        parse_dates=True,
                        low_memory=False)

# 转换时间列格式
tick_data['timestamp'] = pd.to_datetime(tick_data['timestamp'], format="%Y-%m-%dD%H:%M:%S.%f")

# 如果需要将timestamp设为索引,转换完成后手动设置
tick_data = tick_data.set_index('timestamp')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 06:12:03