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

Pandas多层索引筛选:结合二级索引切片与列值条件

Pandas MultiIndex 多条件筛选解决方案

这里提供几种简洁的方法来同时满足你的两个筛选条件:

方法1:使用loc + IndexSlice(推荐,索引操作更高效)

当你的MultiIndex包含Lane_ID和Frame_ID两个层级时,用pd.IndexSlice可以灵活跨层级指定条件:

import pandas as pd

# 定义目标Lane_ID值
target_lane = 3

# 初始化索引切片器
idx = pd.IndexSlice
# 筛选Frame_ID在200-300之间,且Lane_ID等于target_lane的行(假设Lane_ID是一级索引)
filtered_df = df.loc[idx[target_lane, 200:300], :]
# 如果层级顺序是Frame_ID在前、Lane_ID在后,调整为:
# filtered_df = df.loc[idx[200:300, target_lane], :]

方法2:使用query方法(语法更直观)

query支持直接用索引层级名称写条件,代码可读性更高:

target_lane = 3
filtered_df = df.query('Lane_ID == @target_lane and Frame_ID between 200 and 300')

注意这里用@符号引用外部变量target_lane。

方法3:布尔索引组合

把两个条件的布尔序列按位与,直接筛选:

target_lane = 3
mask = (df.index.get_level_values('Frame_ID').between(200, 300)) & \
       (df.index.get_level_values('Lane_ID') == target_lane)
filtered_df = df[mask]

这种方式适合需要扩展更复杂条件的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 17:07:11