KeyError:使用Python Pandas set_index函数时,“[]中没有一个在列中”

2024-10-01 09:15:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经从CSV文件创建了原始数据帧

df = pd.read_csv(r'C:\Users\Sam\cars.csv')

它生成具有以下列的df

Index(['mpg', 'cylinders', 'displacement', 'horsepower', 'weight',
   'acceleration', 'model_year', 'origin', 'name'],
  dtype='object')

我可以将其中一列设置为索引

df.set_index('cylinders')

然后,我成功地创建了这个原始df的副本,并插入了一个组合名称年份列

df_name = df.copy()

df_name ['name_year'] = df.name + ' - 19' + df.model_year.astype(str) 

然而,无论何时尝试将一列指定为索引,无论是新的name\u year列还是其他列,我都会遇到相同的keyrerror消息

df_car_index = df_name.copy() 

df_car_index = df_car_index.set_index('horsepower', inplace=True)
df_car_index

KeyError: "None of ['horsepower'] are in the columns"

Tags: csvnamedfread原始数据indexmodelcar
2条回答

您只需要运行这部分代码一次。当该列被设置为索引并再次运行代码时,将出现错误

将列设置为索引时,它将移动到索引中并从列中删除。因此set_index()只需要在通过inplace=True时运行一次,使其成为永久性更改

如果要恢复索引更改,可以执行df.reset_index(inplace=True)。移动到索引的列将重新添加到列中。与set_index()一样,此代码只需运行一次,重新运行会导致错误

您可以找到如何设置自定义索引并将其还原回on this tutorial by Data School的演示

另一个要点是:如果您尝试在从其中一列设置的自定义索引上添加另一个索引,它将覆盖自定义索引列,并有效地将其删除

相关问题 更多 >