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

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *