无法将Pandas DataFrame日期列转为datetime,报KeyError: 'date'错误
解决Pandas转换日期列时的KeyError: 'date'问题
从你给出的DataFrame输出和报错信息来看,问题的核心很明确:你的DataFrame里不存在名为'date'的列——虽然看起来列名是date,但大概率是列名前后带有空格(看你给出的示例第一行是 date value,date前面明显有个空格),导致Pandas找不到准确的列名。
下面是一步步的解决办法:
第一步:确认真实的列名
先运行这段代码查看DataFrame的所有列名,这样能直观看到列名的真实情况:
print(df.columns)
如果输出是类似Index([' date', 'value'], dtype='object'),那就坐实了列名有前导空格的问题。
第二步:清理列名并转换日期
最规范的做法是先清理所有列名的前后空格,再执行日期转换:
# 去除所有列名的前导/尾随空格 df.columns = df.columns.str.strip() # 现在可以正常转换日期列了 df['date'] = pd.to_datetime(df['date'])
备选方案:直接使用带空格的列名
如果你不想修改所有列名,也可以直接指定带空格的列名完成转换,之后再重命名:
# 转换带空格的日期列 df['date'] = pd.to_datetime(df[' date']) # 重命名列去掉空格 df.rename(columns={' date': 'date'}, inplace=True)
预防措施:读取数据时处理空格
如果你的数据是从CSV等文件读取的,可以在读取时直接设置参数避免这个问题:
df = pd.read_csv('your_file.csv', skipinitialspace=True)
这个参数会自动忽略列名和字段值开头的空格,从根源上避免这类问题。
内容的提问来源于stack exchange,提问作者prre72
相关产品推荐
相关产品推荐

