[英]Pandas - Check if value from a column exists in any index of a MultiIndex dataframe
[英]pandas check if value exists in one specific index in a MultiIndex dataframe
我有一個名為df
的MultiIndex
數據框,其中包含 3 個indexes
(水果、顏色、味道)。 我想搜索 1 個特定的index
,該index
是Color
並查看該value
是否存在於其中。
例如:代碼看起來像這樣。 Color
是 dataframe 中的一個index
,而不僅僅是一列。
if 'purple' in 'Color':
print('yes')
else:
print('no')
我只希望它搜索Color
而不是任何其他indexes/columns
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
非常感謝您的參與!
試試xs
從 DataFrame 中抓取一個橫截面:
df.xs('purple', level=1, drop_level=False)
Quantity Quality
Fruit Color Type
grapes purple sweet 5 bad
只是為了測試它是否存在檢查橫截面是否為empty
:
df.xs('purple', level=1).empty
if not df.xs('purple', level=1).empty:
print('yes')
else:
print('no')
或者reset_index
並使用any
查看是否有任何匹配項:
df.reset_index('Color')['Color'].eq('purple').any()
True
if df.reset_index('Color')['Color'].eq('purple').any():
print('yes')
else:
print('no')
如果你想要一個表格 output,你可以使用它:
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
您可以使用get_level_values
進行過濾。
if "purple" in df.index.get_level_values('Color'):
print('yes')
else:
print('no')
您還可以檢查該值是否在index.unique(level)
中。 這樣就不需要將整個索引復制到列表中。 它還可能使后續搜索更快。
if "purple" in df.index.unique(level="Color"):
print("yes")
else:
print("no")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.