Pandas : supprimez les colonnes si le nom contient une chaîne spécifique



Vous pouvez utiliser les méthodes suivantes pour supprimer des colonnes d’un DataFrame pandas dont le nom contient des chaînes spécifiques :

Méthode 1 : supprimer les colonnes si le nom contient une chaîne spécifique

df.drop(list(df.filter(regex='this_string')), axis=1, inplace=True)

Méthode 2 : supprimer les colonnes si le nom contient l’une des plusieurs chaînes spécifiques

df.drop(list(df.filter(regex='string1|string2|string3')), axis=1, inplace=True)

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_name': ['A', 'B', 'C', 'D', 'E', 'F'],
                   'team_location': ['AU', 'AU', 'EU', 'EU', 'AU', 'EU'],
                   'player_name': ['Andy', 'Bob', 'Chad', 'Dan', 'Ed', 'Fran'],
                   'points': [22, 29, 35, 30, 18, 12]})

#view DataFrame
print(df)

  team_name team_location player_name  points
0         A            AU        Andy      22
1         B            AU         Bob      29
2         C            EU        Chad      35
3         D            EU         Dan      30
4         E            AU          Ed      18
5         F            EU        Fran      12

Exemple 1 : supprimer des colonnes si le nom contient une chaîne spécifique

Nous pouvons utiliser la syntaxe suivante pour supprimer toutes les colonnes du DataFrame qui contiennent « équipe » n’importe où dans le nom de la colonne :

#drop columns whose name contains 'team'
df.drop(list(df.filter(regex='team')), axis=1, inplace=True)

#view updated DataFrame
print(df)

  player_name  points
0        Andy      22
1         Bob      29
2        Chad      35
3         Dan      30
4          Ed      18
5        Fran      12

Notez que les deux colonnes contenant « équipe » dans le nom ont été supprimées du DataFrame.

Exemple 2 : supprimer des colonnes si le nom contient l’une des plusieurs chaînes spécifiques

Nous pouvons utiliser la syntaxe suivante pour supprimer toutes les colonnes du DataFrame qui contiennent « joueur » ou « points » n’importe où dans le nom de la colonne :

#drop columns whose name contains 'player' or 'points'
df.drop(list(df.filter(regex='player|points')), axis=1, inplace=True)

#view updated DataFrame
print(df)

  team_name team_location
0         A            AU
1         B            AU
2         C            EU
3         D            EU
4         E            AU
5         F            EU

Notez que les deux colonnes contenant « joueur » ou « points » dans le nom ont été supprimées du DataFrame.

Remarque : Le | Le symbole dans les pandas est utilisé comme opérateur « OU ».

Ressources additionnelles

Les didacticiels suivants expliquent comment effectuer d’autres tâches courantes dans les pandas :

Comment supprimer la première colonne dans Pandas
Comment supprimer les colonnes en double dans Pandas
Comment supprimer toutes les colonnes sauf certaines dans Pandas

Ajouter un commentaire

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