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

如何获取裁剪后MultiIndex DataFrame的第二层索引名称?

当然可以获取到第二层索引的具体值,完全不需要预先知晓!因为你用drop_level=False保留了原MultiIndex结构,df2的索引仍然是两层的,我们可以直接通过索引对象的方法提取第二层的内容:

方法1:提取第二层所有索引值(包含重复项,若存在)

使用get_level_values()方法,指定第二层的层级序号(第一层是level 0,第二层是level 1):

# 获取第二层的所有索引值
second_level_vals = df2.index.get_level_values(1)
print(second_level_vals)
# 输出类似:Int64Index([1, 2], dtype='int64', name='level_1')

方法2:提取第二层的唯一索引值

如果只需要去重后的索引值,加上unique()方法并转成列表更方便后续使用:

unique_second_level = df2.index.get_level_values(1).unique().tolist()
print(unique_second_level)  # 输出 [1, 2]

如何用这些值进行loc调用?

拿到索引值后,就可以直接代入loc语法,比如遍历所有第二层索引对应的行:

for val in unique_second_level:
    target_row = df2.loc[('Open', val), :]
    # 这里可以对目标行做处理,比如打印或计算
    print(f"索引为('Open', {val})的行:\n{target_row}\n")

或者直接访问特定索引值对应的行:

# 访问第二层第一个索引值对应的行
first_target_row = df2.loc[('Open', unique_second_level[0]), :]

另外,你也可以通过df2.index.levels[1]直接获取第二层索引的唯一值集合,效果和unique()方法一致:

print(df2.index.levels[1])  # 输出 Int64Index([1, 2], dtype='int64')

这样不管第二层索引是什么值,都能动态获取到,不用提前硬编码啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:32:47