pandas基于部分层级MultiIndex交集筛选深层索引DataFrame的方法
实现方法
你可以直接通过pandas多层索引的isin()方法配合level参数完成筛选,一行代码即可实现需求,无需额外join和删除冗余列:
# 写法1:通过level参数指定匹配的索引层级,更通用 result = df[df.index.isin(df2.index, level=[0, 1])]
也可以手动移除多余索引层级后做匹配:
# 写法2:先移除df的C层索引,再判断是否在df2的索引中 result = df[df.index.droplevel('C').isin(df2.index)]
说明
- 写法1的
level参数可以填层级序号,也可以填层级名,比如level=["A", "B"],可读性更好 - 两种写法最终输出结果都和预期一致:
V A B C a1 b1 c1 1 c2 2 a2 b1 c1 4
内容的提问来源于stack exchange,提问作者user2299980
相关产品推荐
相关产品推荐

