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

如何在二级MultiIndex的Pandas DataFrame中仅通过第二组索引访问数据?

解决Pandas MultiIndex中访问非首个层级索引的问题

针对你的MultiIndex场景,有两种简洁的方法可以直接访问指定movie的数据:

推荐方法:使用xs()函数

xs()是Pandas为MultiIndex量身打造的快捷提取工具,能直接定位到指定层级的索引值,无需关注其他层级:

# 通过层级名称指定
df.xs(302, level='movie')

# 或者通过层级位置(movie是第二个索引,位置为1)
df.xs(302, level=1)

执行后会返回所有user中movie为302的行,完全符合你的需求。

方法二:使用loc结合索引切片

如果想用loc实现,需要用元组来明确各层级的筛选规则——第一个层级用slice(None)表示匹配所有user,第二个层级指定目标movie值:

df.loc[(slice(None), 302), :]

如果需要频繁进行复杂的多层级筛选,可以导入IndexSlice简化写法:

import pandas as pd
idx = pd.IndexSlice
df.loc[idx[:, 302], :]

你之前尝试df.loc[:,302]报错,是因为Pandas会把这个语法解析为“选择所有行,列名为302”,而非索引层级筛选,所以才会出现KeyError。

不需要改用Numpy,Pandas对MultiIndex的查询支持已经足够完善,上述两种方法都能高效解决问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 14:45:01