Comment trier un DataFrame Pandas par date (avec exemples)



Souvent, vous souhaiterez peut-être trier un DataFrame pandas en fonction d’une colonne contenant des dates. Heureusement, cela est facile à faire en utilisant la fonction sort_values() .

Ce tutoriel montre plusieurs exemples d’utilisation pratique de cette fonction.

Exemple 1 : Trier par colonne de date

Supposons que nous ayons le DataFrame pandas suivant :

import pandas as pd

#create DataFrame
df = pd.DataFrame({'sales': [4, 11, 13, 9],
                   'customers': [2, 6, 9, 7],
                   'date': ['2020-01-25', '2020-01-18', '2020-01-22', '2020-01-21']})

#view DataFrame
print(df)

   sales  customers        date
0      4          2  2020-01-25
1     11          6  2020-01-18
2     13          9  2020-01-22
3      9          7  2020-01-21

Tout d’abord, nous devons utiliser la fonction to_datetime() pour convertir la colonne ‘date’ en un objet datetime :

df['date'] = pd.to_datetime(df['date'])

Ensuite, nous pouvons trier le DataFrame en fonction de la colonne ‘date’ à l’aide de la fonction sort_values() :

df.sort_values(by='date')

        sales	customers	date
1	11	6	  2020-01-18
3	9	7	  2020-01-21
2	13	9	  2020-01-22
0	4	2	  2020-01-25

Par défaut, cette fonction trie les dates par ordre croissant. Cependant, vous pouvez spécifier ascending=False pour trier par ordre décroissant :

df.sort_values(by='date', ascending=False)

	sales	customers	date
0	4	2	  2020-01-25
2	13	9	  2020-01-22
3	9	7	  2020-01-21
1	11	6	  2020-01-18

Exemple 2 : trier par plusieurs colonnes de dates

Supposons que nous ayons le DataFrame pandas suivant :

import pandas as pd

#create DataFrame
df = pd.DataFrame({'person': ['A', 'B', 'C', 'D'],
                   'order_date': ['2020-01-15', '2020-01-15', '2020-01-20', '2020-01-20'],
                   'receive_date': ['2020-01-25', '2020-01-18', '2020-01-22', '2020-01-21']})

#view DataFrame
print(df)

  person  order_date receive_date
0      A  2020-01-15   2020-01-25
1      B  2020-01-15   2020-01-18
2      C  2020-01-20   2020-01-22
3      D  2020-01-20   2020-01-21

Nous pouvons utiliser la fonction sort_values pour trier le DataFrame sur plusieurs colonnes en fournissant simplement plusieurs noms de colonnes à la fonction :

#convert both date columns to datetime objects
df[['order_date','receive_date']] = df[['order_date','receive_date']].apply(pd.to_datetime)

#sort DateFrame by order_date, then by receive_date
df.sort_values(by=['order_date', 'receive_date'])

        person	order_date	receive_date
1	B	2020-01-15	2020-01-18
0	A	2020-01-15	2020-01-25
3	D	2020-01-20	2020-01-21
2	C	2020-01-20	2020-01-22

Le DataFrame est désormais trié par ordre croissant par order_date, puis par ordre croissant par réception_date.

Ressources additionnelles

Comment filtrer les lignes Pandas DataFrame par date
Comment convertir DateHeure en date dans Pandas
Comment convertir des colonnes en DateTime dans Pandas
Comment trier à la fois par index et par colonne dans Pandas

Ajouter un commentaire

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