Pandas:如何比较两列之间的字符串
您可以使用以下基本语法来比较 pandas DataFrame 中两列之间的字符串:
df[' col1 ']. str . strip (). str . lower () == df[' col2 ']. str . strip (). str . lower ()
str.strip()函数从每个字符串中删除空格, str.lower()函数在执行比较之前将每个字符串转换为小写。
以下示例展示了如何在实践中使用此语法。
示例:比较 Pandas 中两列之间的字符串
假设我们有以下 pandas DataFrame,其中包含两列篮球队名称:
import pandas as pd #createDataFrame df = pd. DataFrame ({' team1 ': ['Mavs', 'Hawks', 'Nets', 'Hornets', 'Lakers'], ' team2 ': ['Mavs', 'Jazz', 'Nets', 'Hornets', 'LAKERS']}) #view DataFrame print (df) team1 team2 0 Mavs Mavs 1 Hawks Jazz 2 Nets Nets 3 Hornets Hornets 4 Lakers LAKERS
请注意,有些团队名称在随机位置包含空格,有些团队名称是大写的。
假设我们要比较每行中的字符串,看看每行中的团队名称是否相同。
如果我们在比较字符串时仅使用==符号,则只有大小写相同且位置完全相同的空格时,pandas 才会返回True :
#create new column that tests if strings in team columns are equal df[' equal '] = df[' team1 '] == df[' team2 '] #view updated DataFrame print (df) team1 team2 equal 0 Mavs Mavs False 1 Hawks Jazz False 2 Nets Nets True 3 Hornets Hornets False 4 Lakers LAKERS False
请注意,只有一行返回True ,因为它是字符串包含相同大小写和空格位置的唯一行。
但是,我们可以使用str.strip()函数从每个字符串中删除空格,并使用str.lower()函数在执行比较之前将每个字符串转换为小写:
#remove whitespace and convert each string to lowercase, then compare strings df[' equal '] = df[' team1 ']. str . strip (). str . lower () == df[' team2 ']. str . strip (). str . lower () #view updated DataFrame print (df) team1 team2 equal 0 Mavs Mavs True 1 Hawks Jazz False 2 Nets Nets True 3 Hornets Hornets True 4 Lakers LAKERS True
现在,除了球队名称为“Hawks”和“Jazz”的行之外,每一行都返回True ,因为即使在删除空格并将字符串转换为小写之后,这些字符串也不相等。
其他资源
以下教程解释了如何在 pandas 中执行其他常见任务:
Pandas:如何从字符串中删除特定字符
Pandas:检查字符串是否包含多个子字符串
Pandas:如何用 NaN 替换空字符串