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

基于列条件修改Pandas索引值(不使用reset_index)

基于指定列条件修改Pandas DataFrame索引(不使用reset_index)

如果你需要根据某列的条件修改DataFrame的索引值,同时不想用reset_index()方法,可以用以下两种简洁的方式实现:

场景示例

初始DataFrame如下:

import pandas as pd

data = {
    "Product": ["Computer", "Printer", "Monitor"],
    "Price": [120, 25, 40],
}

df = pd.DataFrame(data, index=["Item_1", "Item_1", "Item_1"])

输出:

Product  Price
Item_1  Computer    120
Item_1  Printer     25
Item_1  Monitor     40

目标是将Product列值为Monitor的行索引从Item_1改为TOTO。


方法1:复制索引后针对性修改

由于Pandas的Index对象默认不可变,我们可以先复制一份索引,定位到需要修改的行后赋值,再替换原索引:

# 复制原索引
idx = df.index.copy()
# 筛选条件行并修改索引值
idx[df['Product'] == 'Monitor'] = 'TOTO'
# 重新赋值索引
df.index = idx

方法2:使用Index.where()一步到位

where()方法可以批量处理索引替换,保留满足条件的原索引,不满足的替换为指定值:

df.index = df.index.where(df['Product'] != 'Monitor', 'TOTO')

修改后结果

执行任意一种方法后,DataFrame变为:

Product  Price
Item_1  Computer    120
Item_1  Printer     25
TOTO    Monitor     40

内容的提问来源于stack exchange,提问作者olivier dadoun

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 06:03:12