如何在多级索引的数据框中检查某个特定索引是否存在指定值。

3

我有一个名为dfMultiIndex数据框,它有3个indexes(水果、颜色、口感)。我想要搜索1个特定的index,那就是Color,并查看它是否存在对应的value

例如:代码大致如下。其中,Color是数据框中的一个index,而不仅仅是一列。

if 'purple' in 'Color':
    print('yes')
else:
    print('no')

我只希望它搜索Color而非任何其他索引/列

                       Quantity     Quality
Fruit   Color   Taste
apple   red     tart     12          good
lemon   yellow  sour     11          average
grapes  purple  sweet     5          bad
lime    green   citrus    3          excellent

非常感谢您的时间!
3个回答

6
您可以使用 get_level_values 进行过滤。
if "purple" in df.index.get_level_values('Color'):
    print('yes')
else:
    print('no')

5

如果您希望获得表格形式的输出,可以使用以下方法:

def check(data:pd.DataFrame,l:list):
    c = data.index.get_level_values("Color").isin(l)
    return np.where(c,'yes','no')

df['Result'] = check(df,['purple'])

print(df)

                       Quantity    Quality Result
Fruit  Color  Type                              
apple  red    tart          12       good     no
lemon  yellow sour          11    average     no
grapes purple sweet          5        bad    yes
lime   green  citrus         3  excellent     no

1
你可以检查值是否在index.unique(level)中。这样整个索引就不需要复制到列表中。这可能会使后续的搜索更快。
if "purple" in df.index.unique(level="Color"): 
    print("yes")
else: 
    print("no")

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接