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 替换空字符串

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注