pandas如何判断指定值是否存在于MultiIndex DataFrame的特定索引层级
判断MultiIndex指定层级是否存在目标值的实现方法
核心实现逻辑是调用MultiIndex的get_level_values方法提取指定层级的所有索引值,直接判断成员关系即可,代码如下:
# 直接传入索引层名称Color提取该层所有值,判断目标值是否存在 if 'purple' in df.index.get_level_values('Color'): print('yes') else: print('no')
方法说明
df.index.get_level_values('Color')仅提取索引中Color层级的所有值,不会读取其他索引层和数据列,完全匹配需求- 也可以传入层级序号实现同样效果,
Color是三层索引的第二层(序号从0开始计数),可以写为df.index.get_level_values(1),不过用层级名称的写法可读性更高、不容易出错
小提示:如果
Color层级重复值非常多,可先去重再判断来优化性能,写法为'purple' in df.index.unique(level='Color')
测试示例
你可以用以下代码构造和示例一致的DataFrame验证效果:
import pandas as pd # 构造三层MultiIndex idx = pd.MultiIndex.from_tuples( [ ("apple", "red", "tart"), ("lemon", "yellow", "sour"), ("grapes", "purple", "sweet"), ("lime", "green", "citrus") ], names=["Fruit", "Color", "Taste"] ) # 构造DataFrame df = pd.DataFrame( data={ "Quantity": [12, 11, 5, 3], "Quality": ["good", "average", "bad", "excellent"] }, index=idx )
执行判断代码后会输出yes,如果判断'black'这类不存在的值则会输出no。
内容的提问来源于stack exchange,提问作者Kevin
相关产品推荐
相关产品推荐

