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

如何按多索引筛选Pandas DataFrame:匹配Site In或Site Out为'Mid'

筛选Pandas多级索引DataFrame的解决方案

针对你这个带多级索引的m.transmission DataFrame,要筛选出**Site In等于'Mid' 或 Site Out等于'Mid'**的行,确实不能直接用loc[['Mid']](它只会匹配第一级索引),这里给你两种简单实用的实现方法:

方法一:布尔索引结合get_level_values

这是最直观的方式,先提取对应层级的索引值,再组合条件筛选:

# 分别提取多级索引中"Site In"和"Site Out"层级的所有值
site_in_vals = m.transmission.index.get_level_values('Site In')
site_out_vals = m.transmission.index.get_level_values('Site Out')

# 用逻辑或(|)组合条件,筛选符合要求的行,保留所有列
filtered_df = m.transmission[(site_in_vals == 'Mid') | (site_out_vals == 'Mid')]

这个方法逻辑清晰,不管你的多级索引层级顺序如何,只要指定层级名称就能准确提取,不会出错。

方法二:用query方法简化写法

如果你喜欢更简洁的代码,可以用Pandas的query方法,直接通过索引层级名称写条件:

# 注意索引名称带空格,需要用反引号(`)包裹层级名
filtered_df = m.transmission.query("`Site In` == 'Mid' or `Site Out` == 'Mid'")

这种写法更接近自然语言,可读性很强,适合快速编写筛选逻辑。

两种方法最终都会得到你需要的4条记录:Site In=Mid、Site Out=North;Site In=Mid、Site Out=South;Site In=North、Site Out=Mid;Site In=South、Site Out=Mid,并且所有列都会完整保留。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:24:46