Come ordinare un dataframe pandas per data (con esempi)


Spesso potresti voler ordinare un DataFrame panda in base a una colonna contenente date. Fortunatamente, questo è facile da fare utilizzando la funzione sort_values() .

Questo tutorial mostra diversi esempi di utilizzo pratico di questa funzione.

Esempio 1: ordinamento per colonna della data

Supponiamo di avere i seguenti panda DataFrame:

 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

Innanzitutto, dobbiamo utilizzare la funzione to_datetime() per convertire la colonna ‘date’ in un oggetto datetime:

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

Successivamente, possiamo ordinare il DataFrame in base alla colonna “data” utilizzando la funzione 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

Per impostazione predefinita, questa funzione ordina le date in ordine crescente. Tuttavia, puoi specificare ascending=False per ordinare in ordine decrescente:

 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

Esempio 2: ordinamento per più colonne di date

Supponiamo di avere i seguenti panda DataFrame:

 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

Possiamo utilizzare la funzione sort_values per ordinare il DataFrame su più colonne semplicemente fornendo più nomi di colonna alla funzione:

 #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

Il DataFrame è ora ordinato in ordine crescente per order_date, quindi in ordine crescente per ricevuta_date.

Risorse addizionali

Come filtrare le righe Pandas DataFrame per data
Come convertire DateTime fino ad oggi in Panda
Come convertire le colonne in DateTime in Pandas
Come ordinare sia per indice che per colonna in Pandas

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *