Pandas : Vérifiez si la chaîne contient plusieurs sous-chaînes
Vous pouvez utiliser les méthodes suivantes pour vérifier si une chaîne dans un DataFrame pandas contient plusieurs sous-chaînes :
Méthode 1 : vérifier si la chaîne contient une sous-chaîne parmi plusieurs
df['string_column'].str.contains('|'.join(['string1', 'string2']))
Méthode 2 : vérifier si la chaîne contient plusieurs sous-chaînes
df['string_column'].str.contains(r'^(?=.*string1)(?=.*string2)')
Les exemples suivants montrent comment utiliser chaque méthode en pratique avec le DataFrame pandas suivant :
import pandas as pd
#create DataFrame
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
Exemple 1 : Vérifier si la chaîne contient une sous-chaîne parmi plusieurs
Nous pouvons utiliser la syntaxe suivante pour vérifier si chaque chaîne de la colonne équipe contient soit la sous-chaîne « Bon » ou « Est » :
#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
La nouvelle colonne good_or_east renvoie les valeurs suivantes :
- Vrai si l’équipe contient « Bon » ou « Est »
- Faux si l’équipe ne contient ni « Bon » ni « Est »
Remarque : Le | L’opérateur signifie « ou » en pandas.
Exemple 2 : Vérifier si la chaîne contient plusieurs sous-chaînes
Nous pouvons utiliser la syntaxe suivante pour vérifier si chaque chaîne de la colonne équipe contient la sous-chaîne « Bon » et « Est » :
#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
La nouvelle colonne good_and_east renvoie les valeurs suivantes :
- Vrai si l’équipe contient « Bon » et « Est »
- Faux si l’équipe ne contient pas « Bon » et « Est »
Notez qu’une seule valeur True est renvoyée puisqu’il n’y a qu’un seul nom d’équipe contenant la sous-chaîne « Good » et la sous-chaîne « East ».
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres tâches courantes dans les pandas :
Pandas : ajouter une colonne d’un DataFrame à un autre
Pandas : obtenez des lignes qui ne se trouvent pas dans un autre DataFrame
Pandas : comment vérifier si plusieurs colonnes sont égales