Ham*_*ter 8 python indexing methods dataframe pandas
我已经从 CSV 文件创建了原始数据框
df = pd.read_csv(r'C:\Users\Sam\cars.csv')
Run Code Online (Sandbox Code Playgroud)
它产生一个包含以下列的 df
Index(['mpg', 'cylinders', 'displacement', 'horsepower', 'weight',
'acceleration', 'model_year', 'origin', 'name'],
dtype='object')
Run Code Online (Sandbox Code Playgroud)
我可以将这些列之一设置为索引
df.set_index('cylinders')
Run Code Online (Sandbox Code Playgroud)
然后我成功创建了这个原始 df 的副本并插入了组合名称年份列
df_name = df.copy()
df_name ['name_year'] = df.name + ' - 19' + df.model_year.astype(str)
Run Code Online (Sandbox Code Playgroud)
但是,每当尝试将列分配为索引时,无论是新的 name_year 列还是其他列,我都会遇到相同的 keyError 消息
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"
Run Code Online (Sandbox Code Playgroud)
当您将列设置为索引时,它将移动到索引并从列中删除。因此set_index(),只需在您通过时运行一次inplace=True,使其成为永久性更改。
如果你想恢复索引更改,你可以这样做df.reset_index(inplace=True)。移动到索引的列将重新添加到列中。比如set_index(),这段代码只需要运行一次,重新运行就会出错。
您可以在 Data School 的本教程中找到有关如何设置自定义索引并将其恢复回来的演示。
另一个重要的一点是:如果您尝试在从其中一列设置的自定义索引上添加另一个索引,它将覆盖自定义索引列,并有效地将其删除。