Pandas合并DataFrame后访问Age_CONDUCTEUR列触发KeyError求助
解决Pandas中带前导空格列名的KeyError问题
问题核心是Excel表头单元格存在前导空格,Pandas读取时完整保留了这些空格,导致你输入的列名Age_CONDUCTEUR和实际列名 Age_CONDUCTEUR(带空格)不匹配,触发KeyError。
快速解决方案
1. 临时访问(不推荐)
直接使用包含前导空格的列名:
# 注意列名前的空格 df[' Age_CONDUCTEUR']
2. 永久清理列名(推荐)
批量去除所有列名的前后空格,彻底解决问题:
# 清理所有列名的前后空白字符 df.columns = df.columns.str.strip() # 之后即可正常访问列 d1 = {'Cout_ecreté': pd.Series(df['Cout_ecreté']), 'Age_CONDUCTEUR': pd.Series(df['Age_CONDUCTEUR'])}
3. 读取Excel时提前处理
在读取文件阶段就清理列名,避免后续操作中反复踩坑:
import pandas as pd # 读取并立即清理列名 data1 = pd.read_excel('Données production auto A00 MCMA final.xlsx') data1.columns = data1.columns.str.strip() data2 = pd.read_excel('Données sinistres auto A00 MCMA final.xlsx') data2.columns = data2.columns.str.strip() df = data2.merge(data1, on="clé")
额外优化
如果需要统一列名格式(比如把空格替换为下划线),可以进一步处理:
# 清理空格+替换空格为下划线+转为小写(按需选择) df.columns = df.columns.str.strip().str.replace('\s+', '_', regex=True).str.lower()
内容的提问来源于stack exchange,提问作者samah ramdani
相关产品推荐
相关产品推荐

