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

如何使用pandas MultiIndex查询多级列索引下的指定二级列数据

Pandas多级列索引多二级列批量查询方案

第一步:构造符合场景的测试数据

import pandas as pd

# 构造多级列索引
columns = pd.MultiIndex.from_tuples(
    [
        ('double-double', 'ketchup'),
        ('double-double', 'mustard'),
        ('double-double', 'relish'),
        ('triple', 'ketchup'),
        ('triple', 'mustard'),
        ('triple', 'relish')
    ],
    names=['汉堡品类', '调料品类']
)

# 构造测试数据
data = [
    [3,3,3,4,5,5],
    [3,5,2,3,3,2]
]
index = ["Beep's Burgers", "Roadhouse"]
df = pd.DataFrame(data, index=index, columns=columns)

第二步:两种实现查询的方法

方法1:使用pd.IndexSlice(推荐,灵活度最高)

该语法是pandas专为多级索引切片设计的工具,可读性最高:

# 初始化索引切片器
idx = pd.IndexSlice
# 逗号前的冒号表示取所有行,列维度第一个冒号表示取所有一级索引,后接列表指定要筛选的二级索引
result = df.loc[:, idx[:, ['ketchup', 'mustard']]]

返回结果结构:

店铺名称double-doubletriple
ketchupmustardketchupmustard
Beep's Burgers3345
Roadhouse3533

方法2:使用xs跨截面查询

仅需要按指定层级匹配值时,也可以用cross-section方法实现:

# axis=1表示操作列索引,level=1指定匹配二级索引,drop_level=False保留原始多级索引结构
result = df.xs(key=['ketchup', 'mustard'], level=1, axis=1, drop_level=False)

两种方法返回的结果完全一致,可根据使用习惯选择。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 12:18:02