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

如何筛选多层索引DataFrame中包含特定值的索引对应的全部行

实现方法

你可以通过两步完成筛选:先定位所有包含目标pageid的一级索引sid,再用这些sid过滤原表所有匹配的行,代码如下:

完整示例代码

import pandas as pd

# 构造示例DataFrame
data = {'pageid': ['dog', 'cat', 'fish', 'pig', 'cat', 'fish', 'pig', 'cat', 'dog']}
index = pd.MultiIndex.from_tuples(
    [(1, 'ABC'), (1, 'ABC'), (1, 'ABC'),
     (2, 'DEF'), (2, 'DEF'), (2, 'DEF'),
     (3, 'GHI'), (3, 'GHI'), (3, 'GHI')],
    names=['sid', 'vid']
)
df = pd.DataFrame(data, index=index)

# 配置筛选目标
target_pageid = 'dog'

# 1. 提取所有包含目标pageid的sid列表
target_sids = df[df['pageid'] == target_pageid].index.get_level_values('sid').unique()

# 2. 过滤保留对应sid的所有行
result_df = df[df.index.isin(target_sids, level='sid')]

print(result_df)

代码说明

  • index.get_level_values('sid'):获取多级行索引中sid层级的所有值
  • unique():对匹配到的sid去重,避免后续筛选重复判断
  • index.isin(target_sids, level='sid'):指定按sid层级判断索引是否在目标列表中,匹配成功则保留该sid下的所有行

运行输出的result_df就是你需要的处理后结果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 17:15:03