使用pandas.to_datetime转换CSV日期时间列时报KeyError问题
报错原因
你遇到的KeyError: 'times'报错本质是当前加载完成的DataFrame里不存在名为times的列,pandas无法找到你指定的列名,因此触发该错误。
排查&解决步骤
- 第一步先执行代码查看当前DataFrame的所有真实列名:
print(df.columns.tolist())
- 常见问题及对应解决方法:
- 列名拼写与实际不符:比如CSV里的时间列实际叫
time、datetime等,直接把代码里的列名替换成实际列名即可 - 列名前后带有多余空格:比如实际列名为
' times ',先执行列名批量去空格操作,再做时间转换:
- 列名拼写与实际不符:比如CSV里的时间列实际叫
# 清理所有列名前后的空格 df.columns = df.columns.str.strip() # 再执行时间格式转换 df['times'] = pd.to_datetime(df['times'], format='%Y-%m-%d %H:%M:%S')
- CSV读取时没有正确加载表头:如果读取CSV时加了
header=None参数,会把表头当成第一行数据,列名会变成0、1、2这类索引值,调整读取CSV的参数保证表头被正确识别即可。
内容的提问来源于stack exchange,提问作者Joe Morgan
相关产品推荐
相关产品推荐

