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

如何修改Pandas多索引(MultiIndex)列中的指定条目?

修改MultiIndex中的单个列名

你原来的代码没生效,核心问题有两个:

  • 传给rename的新列名是列表,但MultiIndex的列名必须是元组类型,类型不匹配导致识别失败
  • 注意变量一致性:你代码里用了df_temp赋值给df,要确保df_temp是你要修改的原始DataFrame

下面是几种可行的解决方案:

方法一:修正rename参数(最直接)

把新列名改成元组,直接替换目标列:

import pandas as pd

# 假设df是你的原始DataFrame
old_col = ('b', 'z3', '°C')
new_col = ('b', 'z3', 'degC')
df = df.rename(columns={old_col: new_col})

方法二:定位索引位置修改(更高效)

如果知道目标列的位置,直接修改MultiIndex的层级值:

cols = df.columns.copy()
# 找到目标列的索引位置
target_idx = cols.get_loc(('b', 'z3', '°C'))
# 仅修改目标位置的第三个层级(units)
cols = cols.set_levels(['degC'], level='units', loc=target_idx)
# 重新赋值列名
df.columns = cols

方法三:遍历重构MultiIndex(适配批量场景)

如果需要批量修改或不确定目标列位置,可以遍历所有列名进行替换:

new_cols_list = []
for col_tuple in df.columns:
    if col_tuple == ('b', 'z3', '°C'):
        new_cols_list.append(('b', 'z3', 'degC'))
    else:
        new_cols_list.append(col_tuple)
# 重新构建MultiIndex并赋值
df.columns = pd.MultiIndex.from_tuples(new_cols_list, names=['kind', 'names', 'units'])

执行任意一种方法后,用print(df.columns)就能看到目标列名已经成功修改为('b', 'z3', 'degC')。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 21:40:52