You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python Pandas:使用DataFrame.set_index时如何保留原索引列

如何在更改DataFrame索引时保留原索引列

嘿,这个问题我之前也碰到过!当你直接用set_index('age')替换索引时,原索引name确实会被丢弃,不过有几种简单的方法可以让你既设置新索引,又保留原索引作为普通列:

方法一:先重置索引为列,再设置新索引

这是最直观的方式,先把原索引转换成DataFrame的普通列,再指定新的索引:

import pandas as pd
# 你的初始DataFrame创建代码
df = pd.DataFrame({'Hugo' : {'age' : 21, 'weight' : 75}, 'Bertram': {'age' : 45, 'weight' : 65}, 'Donald' : {'age' : 75, 'weight' : 85}}).T
df.index.names = ['name']

# 步骤1:将原索引转为普通列
df.reset_index(inplace=True)
# 步骤2:设置age为新索引
df.set_index('age', inplace=True)

执行后你的DataFrame会变成:

name  weight
age               
21   Hugo      75
45  Bertram    65
75  Donald     85

方法二:先复制索引到新列,再设置新索引

如果你不想先重置索引,也可以直接把原索引的值赋值给一个新列,再设置新索引:

# 给DataFrame新增name列,值为原索引
df['name'] = df.index
# 设置age为索引
df.set_index('age', inplace=True)

得到的结果和方法一完全一致。

额外提示:避免修改原DataFrame

如果你不想改变原始的DataFrame,可以用链式操作生成新的DataFrame:

df_new = df.reset_index().set_index('age')

这样原df会保持初始状态,df_new就是你需要的结果啦~

内容的提问来源于stack exchange,提问作者Egirus Ornila

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:59:33