Pandas: verifique se a string contém várias substrings


Você pode usar os seguintes métodos para verificar se uma string em um DataFrame do pandas contém várias substrings:

Método 1: verifique se a string contém uma das várias substrings

 df[' string_column ']. str . contains (' | ' .join ([' string1 ',' string2 ']))

Método 2: verifique se a string contém várias substrings

 df[' string_column ']. str . contains ( r'^(?=.*string1)(?=.*string2)' )

Os exemplos a seguir mostram como usar cada método na prática com o seguinte DataFrame do pandas:

 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

Exemplo 1: Verifique se a string contém uma das várias substrings

Podemos usar a seguinte sintaxe para verificar se cada string na coluna da equipe contém a substring “Bom” ou “É”:

 #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

A nova coluna good_or_east retorna os seguintes valores:

  • Verdadeiro se a equipe contiver “Bom” ou “É”
  • Falso se a equipe não contém nem “Bom” nem “É”

Nota : O | O operador significa “ou” em pandas.

Exemplo 2 : Verifique se a string contém várias substrings

Podemos usar a seguinte sintaxe para verificar se cada string na coluna da equipe contém as substring “Bom” e “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

A nova coluna good_and_east retorna os seguintes valores:

  • Verdadeiro se a equipe contiver “Bom” e “É”
  • Falso se a equipe não contiver “Bom” e “É”

Observe que apenas um valor True é retornado, pois há apenas um nome de equipe contendo a substring “Boa” e a substring “Leste”.

Recursos adicionais

Os tutoriais a seguir explicam como realizar outras tarefas comuns em pandas:

Pandas: adicione uma coluna de um DataFrame para outro
Pandas: Obtenha linhas que não estão em outro DataFrame
Pandas: como verificar se várias colunas são iguais

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *