Pandas : comment filtrer par valeur d’index



Vous pouvez utiliser la syntaxe de base suivante pour filtrer les lignes d’un DataFrame pandas en fonction des valeurs d’index :

df_filtered = df[df.index.isin(some_list)]

Cela filtrera le DataFrame pandas pour inclure uniquement les lignes dont les valeurs d’index sont contenues dans some_list .

Les exemples suivants montrent comment utiliser cette syntaxe dans la pratique.

Exemple 1 : filtrer par valeurs d’index numérique

Supposons que nous ayons le DataFrame pandas suivant :

import pandas as pd

#create DataFrame
df = pd.DataFrame({'points': [18, 22, 19, 14, 14, 11, 20, 28],
                   'assists': [5, 7, 7, 9, 12, 9, 9, 4],
                   'rebounds': [11, 8, 10, 6, 6, 5, 9, 12]})

#view DataFrame
print(df)

   points  assists  rebounds
0      18        5        11
1      22        7         8
2      19        7        10
3      14        9         6
4      14       12         6
5      11        9         5
6      20        9         9
7      28        4        12

Notez que les valeurs d’index sont numériques.

Supposons que nous souhaitions filtrer les lignes dont la valeur d’index est égale à 1, 5, 6 ou 7.

Nous pouvons utiliser la syntaxe suivante pour ce faire :

#define list of index values
some_list = [1, 5, 6, 7]

#filter for rows in list
df_filtered = df[df.index.isin(some_list)]

#view filtered DataFrame
print(df_filtered)

   points  assists  rebounds
1      22        7         8
5      11        9         5
6      20        9         9
7      28        4        12

Notez que les seules lignes renvoyées sont celles dont la valeur d’index est égale à 1, 5, 6 ou 7.

Exemple 2 : filtrer par valeurs d’index non numériques

Supposons que nous ayons le DataFrame pandas suivant :

import pandas as pd

#create DataFrame
df = pd.DataFrame({'points': [18, 22, 19, 14, 14, 11, 20, 28],
                   'assists': [5, 7, 7, 9, 12, 9, 9, 4],
                   'rebounds': [11, 8, 10, 6, 6, 5, 9, 12]},
                   index=['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'])

#view DataFrame
print(df)

   points  assists  rebounds
A      18        5        11
B      22        7         8
C      19        7        10
D      14        9         6
E      14       12         6
F      11        9         5
G      20        9         9
H      28        4        12

Notez que les valeurs d’index sont des valeurs de caractères.

Supposons que nous souhaitions filtrer les lignes dont la valeur d’index est égale à A, C, F ou G.

Nous pouvons utiliser la syntaxe suivante pour ce faire :

#define list of index values
some_list = ['A', 'C', 'F', 'G']

#filter for rows in list
df_filtered = df[df.index.isin(some_list)]

#view filtered DataFrame
print(df_filtered)

   points  assists  rebounds
A      18        5        11
C      19        7        10
F      11        9         5
G      20        9         9

Notez que les seules lignes renvoyées sont celles dont la valeur d’index est égale à A, C, F ou G.

Ressources additionnelles

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

Comment insérer une ligne dans un DataFrame Pandas
Comment supprimer la première ligne dans Pandas DataFrame
Comment supprimer des lignes dans Pandas DataFrame en fonction de la condition

Ajouter un commentaire

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