Pandas DataFrame访问指定列时出现KeyError问题求助
Pandas KeyError:指定列不存在的排查方案
核心排查步骤
先确认DataFrame的实际列名
直接运行print(df.columns)或者df.info(),输出后仔细核对:- 列名是否有大小写差异:比如实际列名是
'ticket'而非'Ticket' - 列名是否包含前后空格:比如
' Ticket '这种肉眼难辨的空格,可用df.columns = df.columns.str.strip()批量清理 - 是否列名本身就不存在:比如读取数据时用了
usecols参数过滤掉了这些列,或者之前执行过df.drop()删除了目标列
- 列名是否有大小写差异:比如实际列名是
检查访问列的语法是否正确
访问多列的正确写法是:df[['Ticket', 'Cabin', 'Name', 'PassengerId']] # 或者用loc按标签访问 df.loc[:, ['Ticket', 'Cabin', 'Name', 'PassengerId']]注意:如果用
iloc是按位置索引,不能传入列名,否则必然报错;另外,axis=1参数一般用于drop()、apply()这类方法,单独访问列时不需要指定。确认操作的是目标DataFrame
检查变量名是否正确:比如你可能误操作了一个经过筛选/修改的副本(比如df_filtered),而非原始的DataFrame。排查数据读取环节
如果是从文件读取数据,检查读取代码:# 比如是否指定了usecols过滤列 df = pd.read_csv('titanic.csv', usecols=['Survived', 'Age', 'Sex']) # 这种情况下'Ticket'等列根本没被加载
内容的提问来源于stack exchange,提问作者Shreyas Gupta
相关产品推荐
相关产品推荐

