Een pandas dataframe sorteren op datum (met voorbeelden)


Vaak wilt u een panda’s DataFrame sorteren op basis van een kolom met datums. Gelukkig is dit eenvoudig te doen met de functie sort_values() .

Deze tutorial toont verschillende voorbeelden van praktisch gebruik van deze functie.

Voorbeeld 1: Sorteren op datumkolom

Stel dat we de volgende panda’s DataFrame hebben:

 import pandas as pd

#createDataFrame
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

Eerst moeten we de functie to_datetime() gebruiken om de kolom ‚date‘ om te zetten in een datetime-object:

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

Vervolgens kunnen we het DataFrame sorteren op basis van de ‚date‘-kolom met behulp van de sort_values() functie:

 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

Standaard sorteert deze functie datums in oplopende volgorde. U kunt echter oplopend=False opgeven om in aflopende volgorde te sorteren:

 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

Voorbeeld 2: sorteren op meerdere datumkolommen

Stel dat we de volgende panda’s DataFrame hebben:

 import pandas as pd

#createDataFrame
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

We kunnen de functie sort_values gebruiken om het DataFrame op meerdere kolommen te sorteren door simpelweg meerdere kolomnamen aan de functie op te geven:

 #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

Het DataFrame wordt nu in oplopende volgorde gesorteerd op orderdatum en vervolgens in oplopende volgorde op ontvangstdatum.

Aanvullende bronnen

Hoe Pandas DataFrame-rijen op datum kunnen worden gefilterd
Hoe DateTime naar datum te converteren in Pandas
Hoe kolommen naar DateTime in Pandas te converteren
Hoe te sorteren op zowel index als kolom in Pandas

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert