Pandas删除列报错KeyError: '[7,8] not found in axis'的解决方法
解决Pandas删除列时的KeyError问题
问题代码
dataset_train=pd.read_csv('___.csv',sep=' ',header=None).drop([7,8],axis=1) col_names = ['t1','t2','t3','t4','t5','t6','t7','t8'] dataset_train.columns=col_names print('Shape of Train dataset: ',dataset_train.shape) dataset_train.head()
报错信息
KeyError Traceback (most recent call last) <ipython-input-10-9c1e8c19e8a3> in <module> ----> 1 dataset_train=pd.read_csv('PM_train.csv',sep=' ',header=None).drop([7,8],axis=1) 2 col_names = ['t1','t2','t3','t4','t5','t6','t7','t8'] 3 dataset_train.columns=col_names 4 print('Shape of Train dataset: ',dataset_train.shape) 5 dataset_train.head() 4 frames /usr/local/lib/python3.9/dist-packages/pandas/core/indexes/base.py in drop(self, labels, errors) 6659 if mask.any(): 6660 if errors != "ignore": -> 6661 raise KeyError(f"{list(labels[mask])} not found in axis") 6662 indexer = indexer[~mask] 6663 return self.delete(indexer) KeyError: '[7, 8] not found in axis'
问题原因
报错核心是你读取的PM_train.csv文件列数不足,不存在索引为7和8的列,导致drop()方法找不到目标列抛出异常。
解决步骤
1. 先确认数据集的实际结构
先不要急于删除列,先读取数据查看列数和内容:
# 仅读取数据,不做删除操作 dataset_train = pd.read_csv('PM_train.csv', sep=' ', header=None) # 查看数据集的行数和列数 print('数据集形状:', dataset_train.shape) # 查看前5行数据,确认列的分布 dataset_train.head()
2. 根据实际结构删除目标列
根据上一步的结果,选择对应的操作:
按实际索引删除
替换成数据集中实际存在的列索引,比如如果数据集只有8列(索引0-7),要删除最后两列就用[6,7]:dataset_train = pd.read_csv('PM_train.csv', sep=' ', header=None).drop([6,7], axis=1) col_names = ['t1','t2','t3','t4','t5','t6'] dataset_train.columns = col_names按列名删除
先设置列名(确保列数匹配),再通过列名删除更直观:dataset_train = pd.read_csv('PM_train.csv', sep=' ', header=None) # 先截取与列名数量匹配的列 col_names = ['t1','t2','t3','t4','t5','t6','t7','t8'] dataset_train = dataset_train.iloc[:, :len(col_names)] dataset_train.columns = col_names # 删除指定列名的列 dataset_train = dataset_train.drop(['t7', 't8'], axis=1)修正分隔符问题
如果CSV是用多个空格分隔,sep=' '可能会解析出多余的空列,改用sep='\s+'匹配任意数量的空格:dataset_train = pd.read_csv('PM_train.csv', sep='\s+', header=None) print('修正分隔符后的数据集形状:', dataset_train.shape)
内容的提问来源于stack exchange,提问作者William
相关产品推荐
相关产品推荐

