过滤列,指定区分大小写
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
为了减少歧义,我想改进我的代码以指定我的“==”函数可以包含任何大小写。
例如 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