Pandas : trier le DataFrame par index et par colonne



Vous pouvez utiliser la syntaxe suivante pour trier un DataFrame pandas par index et par colonne :

df = df.sort_values(by = ['column_name', 'index'], ascending = [False, True])

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

Exemples : trier le DataFrame par index et par colonne

Le code suivant montre comment trier un DataFrame pandas par la colonne nommée points puis par la colonne d’index :

import pandas as pd

#create DataFrame
df = pd.DataFrame({'id': [1, 2, 3, 4, 5, 6, 7, 8],
                   'points': [25, 15, 15, 14, 20, 20, 25, 29],
                   'assists': [5, 7, 7, 9, 12, 9, 9, 4],
                   'rebounds': [11, 8, 10, 6, 6, 5, 9, 12]}).set_index('id')

#view first few rows
df.head()

	points	assists	rebounds
id			
1	25	5	11
2	15	7	8
3	15	7	10
4	14	9	6
5	20	12	6

#sort by points and then by index
df.sort_values(by = ['points', 'id'], ascending = [False, True])

	points	assists	rebounds
id			
8	29	4	12
1	25	5	11
7	25	9	9
5	20	12	6
6	20	9	5
2	15	7	8
3	15	7	10
4	14	9	6

Le DataFrame résultant est trié par points par ordre décroissant puis par index par ordre croissant (s’il y a deux joueurs qui marquent le même nombre de points).

Notez que si nous n’utilisons pas l’argument ascendant , alors chaque colonne utilisera l’ordre croissant comme méthode de tri par défaut :

#sort by points and then by index
df.sort_values(by = ['points', 'id'])

        points	assists	rebounds
id			
4	14	9	6
2	15	7	8
3	15	7	10
5	20	12	6
6	20	9	5
1	25	5	11
7	25	9	9
8	29	4	12

Si la colonne d’index n’est actuellement pas nommée, vous pouvez la renommer puis la trier en conséquence :

#sort by points and then by index
df.rename_axis('index').sort_values(by = ['points', 'id'])

        points	assists	rebounds
id			
4	14	9	6
2	15	7	8
3	15	7	10
5	20	12	6
6	20	9	5
1	25	5	11
7	25	9	9
8	29	4	12

Ressources additionnelles

Pandas : comment trier les colonnes par nom
Pandas : trier le DataFrame par date
Pandas : Comment supprimer les lignes en double

Ajouter un commentaire

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