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

如何修改Pandas多层级DataFrame的索引标签与索引名称

手动修改Pandas多级索引的分步实现

嘿,我来一步步带你手动搞定这个多级索引的修改,完全不用那些一键式的快捷方法,让你彻底搞懂每一步的逻辑~

首先先把你的原始代码再贴一遍,方便我们对照操作:

import pandas as pd
import numpy as np

outside='g1 g1 g1 g2 g2 g2'.split()
inside='1 2 3 1 2 3'.split()
hier_index=list(zip(outside,inside))
hier_index= pd.MultiIndex.from_tuples(hier_index)
df=pd.DataFrame(np.random.randn(6,3), hier_index, ['a','b','c'])
df.index.names = ['Outer Group', 'Inner Numbers']

接下来我们分三个步骤完成所有修改,每一步都清晰展示底层逻辑:

1. 把外层索引的g1、g2改成X、Y

Pandas的多级索引(MultiIndex)本质是由levels(存储每一级的唯一值)和codes(存储每个位置对应levels的下标)组成的。我们可以直接修改外层(第0级)的levels值:

# 取出当前索引的levels和codes,转成列表方便修改
levels = list(df.index.levels)
codes = list(df.index.codes)

# 修改第0级(外层)的levels:把原有的['g1','g2']换成['X','Y']
levels[0] = ['X', 'Y']

# 用修改后的levels和codes重新构建多级索引,保留原来的索引名称
new_index = pd.MultiIndex(levels=levels, codes=codes, names=df.index.names)
# 把新索引赋值给df
df.index = new_index

这时候你打印df.index,就能看到外层的g1已经变成X,g2变成Y了。

2. 把X(原g1)对应的内层索引1、2、3改成a、b、c

这一步需要针对外层为X的行,单独修改它们的内层索引值。我们可以先把所有索引转成元组列表,逐个检查修改:

# 获取当前所有索引的元组列表
index_tuples = list(df.index)

# 遍历每个元组,修改符合条件的内层值
modified_tuples = []
for outer_val, inner_val in index_tuples:
    if outer_val == 'X':
        # 定义内层值的映射关系
        inner_mapping = {'1': 'a', '2': 'b', '3': 'c'}
        modified_tuples.append( (outer_val, inner_mapping[inner_val]) )
    else:
        # 外层是Y的行,内层值保持不变
        modified_tuples.append( (outer_val, inner_val) )

# 用修改后的元组重新构建多级索引,保留当前的索引名称
new_index = pd.MultiIndex.from_tuples(modified_tuples, names=df.index.names)
df.index = new_index

现在查看df,X组的内层索引已经变成a、b、c,Y组的内层还是原来的1、2、3。

3. 修改索引名称:Outer Group→Level 1,Inner Numbers→Level 2

这一步最简单,直接修改索引的names属性就行:

df.index.names = ['Level 1', 'Level 2']

最终效果验证

运行print(df),你会得到类似这样的结果(数值是随机的,索引结构正确就没问题):

a         b         c
Level 1 Level 2                           
X       a     0.423198 -0.187643  0.945217
        b    -0.567891  0.321098 -0.765432
        c     0.112233 -0.445566  0.778899
Y       1     -0.234567  0.876543 -0.123456
        2      0.543210 -0.987654  0.654321
        3     -0.333333  0.666666 -0.999999

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:02:06