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

如何在多级索引DataFrame中显示两列的匹配行?

筛选多级列DataFrame中sub_col1与sub_col2值匹配的行

你的DataFrame采用了多级列索引结构,要筛选出sub_col1和sub_col2值相等的行,可按以下步骤操作:

  1. 定位目标子列:通过多级列索引精准获取('col1', 'sub_col1')和('col2', 'sub_col2')两列数据
  2. 生成筛选掩码:比较两列的元素是否相等,得到一个布尔类型的Series
  3. 应用掩码筛选:用布尔Series对原DataFrame进行索引,提取符合条件的行

具体代码实现

import pandas as pd

# 你的DataFrame创建代码
multi_index = pd.MultiIndex.from_tuples(
    [("r0", "rA"), ("r1", "rB"), ("r4", "rB")], names=["Courses", "Fee"]
)
cols = pd.MultiIndex.from_tuples([("col1", "sub_col1"), ("col2", "sub_col2")])
data = [[100, 300], [200, 500], [500, 500]]  # 调整第三行数据,构造一个匹配示例
df = pd.DataFrame(data, columns=cols, index=multi_index)

# 生成筛选条件:sub_col1与sub_col2值相等
mask = df[('col1', 'sub_col1')] == df[('col2', 'sub_col2')]

# 应用筛选条件得到结果
filtered_df = df[mask]

print(filtered_df)

输出结果

col1     col2
           sub_col1 sub_col2
Courses Fee                
r4      rB      500      500

灵活适配方案

如果多级列的第一层名称不固定,仅需匹配第二层的sub_col1和sub_col2,可以通过xs方法直接按第二层索引定位子列,提升代码通用性:

mask = df.xs('sub_col1', level=1, axis=1) == df.xs('sub_col2', level=1, axis=1)
filtered_df = df[mask]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 06:25:18