Pandas : comment sélectionner des colonnes contenant une chaîne spécifique



Vous pouvez utiliser les méthodes suivantes pour sélectionner les colonnes contenant une chaîne particulière dans un DataFrame pandas :

Méthode 1 : sélectionner les colonnes contenant une chaîne spécifique

df.filter(regex='string1')

Méthode 2 : sélectionner les colonnes contenant une parmi plusieurs chaînes

df.filter(regex='string1|string2|string3') 

Les exemples suivants montrent comment utiliser chacune de ces méthodes en pratique avec le DataFrame pandas suivant :

import pandas as pd

#create DataFrame
df = pd.DataFrame({'mavs': [10, 12, 14, 15, 19, 22, 27],
                   'cavs': [18, 22, 19, 14, 14, 11, 20],
                   'hornets': [5, 7, 7, 9, 12, 9, 14],
                   'spurs': [10, 12, 14, 13, 13, 19, 22],
                   'nets': [10, 14, 25, 22, 25, 17, 12]})

#view DataFrame
print(df)

   mavs  cavs  hornets  spurs  nets
0    10    18        5     10    10
1    12    22        7     12    14
2    14    19        7     14    25
3    15    14        9     13    22
4    19    14       12     13    25
5    22    11        9     19    17
6    27    20       14     22    12

Exemple 1 : sélectionner des colonnes contenant une chaîne spécifique

Le code suivant montre comment utiliser la fonction filter() pour sélectionner uniquement les colonnes qui contiennent la chaîne « avs » quelque part dans leur nom :

#select columns that contain 'avs' in the name
df2 = df.filter(regex='avs')

#view DataFrame
print(df2)

   mavs  cavs
0    10    18
1    12    22
2    14    19
3    15    14
4    19    14
5    22    11
6    27    20

Seules les colonnes dont le nom contient « avs » sont renvoyées.

Dans ce cas, « mavs » et « cavs » sont les seules colonnes renvoyées.

Exemple 2 : sélectionner des colonnes contenant une chaîne parmi plusieurs

Le code suivant montre comment utiliser la fonction filter() pour sélectionner uniquement les colonnes qui contiennent « avs » ou « ets » quelque part dans leur nom :

#select columns that contain 'avs' in the name
df2 = df.filter(regex='avs|ets')

#view DataFrame
print(df2)

   mavs  cavs  hornets  nets
0    10    18        5    10
1    12    22        7    14
2    14    19        7    25
3    15    14        9    22
4    19    14       12    25
5    22    11        9    17
6    27    20       14    12

Seules les colonnes dont le nom contient « avs » ou « ets » sont renvoyées.

Notez que la barre verticale ( | ) est l’opérateur « OU » dans les pandas.

N’hésitez pas à enchaîner autant de ces opérateurs « OU » que vous le souhaitez pour sélectionner des colonnes contenant l’une des nombreuses chaînes différentes.

Ressources additionnelles

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

Pandas : Comment déplacer une colonne devant le DataFrame
Pandas : comment vérifier si la colonne contient une chaîne
Pandas : Comment ajouter une colonne vide à DataFrame (3 exemples)

Ajouter un commentaire

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