Pandas:检查字符串是否包含多个子字符串
您可以使用以下方法来检查 pandas DataFrame 中的字符串是否包含多个子字符串:
方法一:检查字符串是否包含多个子字符串之一
df[' string_column ']. str . contains (' | ' .join ([' string1 ',' string2 ']))
方法二:检查字符串是否包含多个子字符串
df[' string_column ']. str . contains ( r'^(?=.*string1)(?=.*string2)' )
以下示例展示了如何在实践中使用以下 pandas DataFrame 的每种方法:
import pandas as pd
#createDataFrame
df = pd. DataFrame ({' team ': ['Good East Team', 'Good West Team', 'Great East Team',
'Great West Team', 'Bad East Team', 'Bad West Team'],
' points ': [93, 99, 105, 110, 85, 88]})
#view DataFrame
print (df)
team points
0 Good East Team 93
1 Good West Team 99
2 Great East Team 105
3 Great West Team 110
4 Bad East Team 85
5 Bad West Team 88
示例1:检查字符串是否包含多个子字符串之一
我们可以使用以下语法来检查team列中的每个字符串是否包含“Good”或“Is”子字符串:
#create new column that checks if each team name contains 'Good' or 'East'
df[' good_or_east '] = df[' team ']. str . contains (' | ' .join ([' Good ',' East ']))
#view updated DataFrame
print (df)
team points good_or_east
0 Good East Team 93 True
1 Good West Team 99 True
2 Great East Team 105 True
3 Great West Team 110 False
4 Bad East Team 85 True
5 Bad West Team 88 False
新的good_or_east列返回以下值:
- 如果团队包含“Good”或“Is”,则为真
- 如果团队既不包含“Good”也不包含“Is”,则为 False
注: |运算符在 pandas 中的意思是“或”。
示例 2 :检查字符串是否包含多个子字符串
我们可以使用以下语法来检查team列中的每个字符串是否包含子字符串“Good”和“Is”:
#create new column that checks if each team name contains 'Good' and 'East'
df[' good_and_east '] = df[' team ']. str . contains ( r'^(?=.*Good)(?=.*East)' )
#view updated DataFrame
print (df)
team points good_and_east
0 Good East Team 93 True
1 Good West Team 99 False
2 Great East Team 105 False
3 Great West Team 110 False
4 Bad East Team 85 False
5 Bad West Team 88 False
新列good_and_east返回以下值:
- 如果团队包含“Good”和“Is”,则为真
- 如果团队不包含“Good”和“Is”,则为 False
请注意,由于只有一个包含“Good”子字符串和“East”子字符串的球队名称,因此仅返回一个True值。
其他资源
以下教程解释了如何在 pandas 中执行其他常见任务:
Pandas:将一列从一个 DataFrame 添加到另一个 DataFrame
Pandas:获取不在另一个 DataFrame 中的行
Pandas:如何检查多列是否相等