过滤列,指定区分大小写

filtering a column, specify case sensitivity

为了减少歧义,我想改进我的代码以指定我的“==”函数可以包含任何大小写。

例如 Apple、APPLE、aPpLe 应该被接受(等等)

function = (df.loc[(df['Food']=='Apple') #and so on...

我是否必须像下面那样指定每个变体,或者是否有更简洁的替代方案

function = (df.loc[(df['Food']=='Apple|apple|APPLE') #and so on...

忽略大小写:

df.loc[df['Food'].str.lower()=='apple']

# or

df.loc[df['Food'].str.lower()=='Apple'.lower()]

如果你想检查 Apple 是否是 in 任何字符串,忽略大小写,你可以这样做:

df[df['Food'].str.contains('apple', case=False)]

使用 Series.str.fullmatch 允许 case 参数。 fullmatch 要求字符串完全匹配,而不仅仅是子字符串(您可以使用 .str.contains.str.match)。

import pandas as pd
df = pd.DataFrame({'Food': ['ApPlE', 'apple', 'APPLE', 'apples', 'Banana']})

# Assign the Boolean mask for illustration
df['any_case_apple'] = df['Food'].str.fullmatch('apple', case=False)

print(df)
#     Food  any_case_apple
#0   ApPlE            True
#1   apple            True
#2   APPLE            True
#3  apples           False
#4  Banana           False