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