使用整数索引的Pandas MultiIndex切片结果不符合预期?
Pandas多层索引切片问题:不是Bug,是操作方式有误
这不是Pandas的Bug,是你对slice()的用法理解偏差导致的。
问题原因
当你在多层索引的顶层使用slice(n)时,Pandas会将其解析为从索引起始位置到n的范围切片(左闭右闭规则)。你用slice(1)时刚好符合预期,只是因为1是顶层索引的第一个值,范围仅包含它自己;但用slice(2)时,范围覆盖了从1到2的所有顶层索引值,所以返回了全部数据。
正确操作方式
以下几种方法都能精准提取顶层索引为2的行:
方法1:直接指定索引值,无需slice
df.loc[(2, slice(None)), :]
返回结果:
Values 2 A 2 2 B 3
方法2:用slice指定精确范围(起始与结束均为2)
df.loc[(slice(2, 2), slice(None)), :]
返回结果与上述一致。
方法3:用xs()方法(更简洁)
xs()是Pandas专门用于提取多层索引中某一层特定值的方法:
df.xs(2, level=0)
返回结果:
Values A 2 B 3
内容的提问来源于stack exchange,提问作者feetwet
相关产品推荐
相关产品推荐

