Pandas : Comment filtrer les éléments « Ne contient pas » ?
Vous pouvez utiliser les méthodes suivantes pour effectuer un filtre « Ne contient pas » dans un DataFrame pandas :
Méthode 1 : filtrer les lignes qui ne contiennent pas de chaîne spécifique
filtered_df = df[df['my_column'].str.contains('some_string') == False]
Méthode 2 : filtrer les lignes qui ne contiennent pas l’une des plusieurs chaînes spécifiques
filtered_df = df[df['my_column'].str.contains('string1|string2|string3') == False]
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': ['Nets', 'Rockets', 'Mavs', 'Spurs', 'Kings', 'Nuggets'], 'points': [18, 22, 19, 14, 14, 11], 'assists': [5, 7, 7, 9, 12, 9], 'rebounds': [11, 8, 10, 6, 6, 5]}) #view DataFrame print(df) team points assists rebounds 0 Nets 18 5 11 1 Rockets 22 7 8 2 Mavs 19 7 10 3 Spurs 14 9 6 4 Kings 14 12 6 5 Nuggets 11 9 5
Exemple 1 : Filtrer les lignes qui ne contiennent pas de chaîne spécifique
Le code suivant montre comment filtrer le DataFrame pandas pour les lignes dont la colonne team ne contient pas « ets » dans le nom :
#filter for rows that do not contain 'ets' in the 'team' column
filtered_df = df[df['team'].str.contains('ets') == False]
#view filtered DataFrame
print(filtered_df)
team points assists rebounds
2 Mavs 19 7 10
3 Spurs 14 9 6
4 Kings 14 12 6
Notez que le DataFrame résultant ne contient aucune ligne dont la valeur dans la colonne d’équipe contient « ets » dans le nom.
En particulier, les équipes suivantes ont été exclues du DataFrame :
- Filets
- Rockets
- Nuggets
Notez que chacun de ces noms d’équipe contenait « ets » dans le nom.
Exemple 2 : Filtrer les lignes qui ne contiennent pas l’une des plusieurs chaînes spécifiques
Le code suivant montre comment filtrer le DataFrame pandas pour les lignes dont la colonne team ne contient pas « ets » dans le nom :
#filter for rows that do not contain 'ets' or 'urs' in the 'team' column
filtered_df = df[df['team'].str.contains('ets|urs') == False]
#view filtered DataFrame
print(filtered_df)
team points assists rebounds
2 Mavs 19 7 10
4 Kings 14 12 6
Notez que le DataFrame résultant ne contient aucune ligne dont la valeur dans la colonne team contient « ets » ou « urs » dans le nom.
Remarque : Le | L’opérateur signifie « OR » en pandas.
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres opérations de filtrage courantes dans les pandas :
Comment filtrer un DataFrame Pandas par valeurs de colonne
Comment filtrer les lignes Pandas DataFrame par date
Comment filtrer un DataFrame Pandas sur plusieurs conditions