Come specificare il formato in pandas.to_datetime
È possibile utilizzare la funzione pandas.to_datetime() per convertire una colonna stringa in una colonna datetime in un DataFrame pandas.
Quando usi questa funzione, puoi usare l’argomento format per specificare il formato in cui si trova la tua data per evitare errori durante la conversione da stringa a datetime.
Questa funzione utilizza la seguente sintassi di base:
df[' datetime '] = pd. to_datetime (df[' my_date_column '], format=' %m%d%Y %H:%M:%S '])
Ecco le direttive più comuni che puoi fornire all’argomento format :
- %m : mese come numero con zero (01, 02, … 12)
- %d : Giorno del mese come numero con zero (01, 02, … 31)
- %y : Anno con secolo come numero (2020, 2021, 2022, ecc.)
- %H : Ora (orologio a 24 ore) come numero riempito con zeri (00, 01, … 23)
- %I : Ora (orologio a 12 ore) come numero riempito con zeri (01, 02, … 12)
- %p : AM o PM
- %M : Minuti sotto forma di numero completato da zeri (00, 01, … 59)
- %S : secondo sotto forma di numero completato da zeri (00, 01, … 59)
Per un elenco completo delle linee guida, consultare questa pagina .
L’esempio seguente mostra come utilizzare l’argomento format nella funzione to_datetime() in diversi scenari.
Esempio: specificare il formato in pandas.to_datetime
Supponiamo di avere il seguente DataFrame panda che contiene informazioni sulle vendite totali effettuate in date diverse in un negozio al dettaglio:
import pandas as pd #createDataFrame df = pd. DataFrame ({' date ': ['10012023 4:15:30', '10042023 7:16:04', '10062023 9:25:00', '10142023 15:30:50', '10152023 18:15:00'], ' sales ': [100, 140, 235, 120, 250]}) #view DataFrame print (df) dirty dates 0 10012023 4:15:30 100 1 10042023 7:16:04 140 2 10062023 9:25:00 235 3 10142023 15:30:50 120 4 10152023 18:15:00 250 #view data type of each column in DataFrame print ( df.dtypes ) date object dirty int64 dtype:object
Possiamo vedere che la colonna della data è attualmente una colonna di stringa (cioè oggetto).
Supponiamo di provare a utilizzare pandas.to_datetime() per convertire questa colonna in datetime:
#attempt to convert date column to datetime format
df[' date '] = pd. to_datetime (df[' date '])
ParserError: month must be in 1..12: 10012023 4:15:30 present at position 0
Stiamo ricevendo un errore perché la funzione pandas.to_datetime() non riconosce il formato di data e ora in cui si trova attualmente la colonna della data .
Possiamo anche usare l’argomento format per specificare il formato della colonna:
#convert date column to datetime format
df[' date '] = pd. to_datetime (df[' date '], format=' %m%d%Y %H:%M:%S ')
#view DataFrame
print (df)
dirty dates
0 2023-10-01 04:15:30 100
1 2023-10-04 07:16:04 140
2 2023-10-06 09:25:00 235
3 2023-10-14 15:30:50 120
4 2023-10-15 18:15:00 250
#view updated type of each column
print ( df.dtypes )
date datetime64[ns]
dirty int64
dtype:object
Possiamo vedere che la colonna della data è stata convertita con successo in una colonna datetime e non abbiamo ricevuto alcun errore poiché abbiamo utilizzato l’argomento format per specificare il formato esatto in cui si trovava la colonna della data .
Nota : puoi trovare la documentazione completa della funzione panda to_datetime() qui .
Risorse addizionali
I seguenti tutorial spiegano come eseguire altre operazioni comuni nei panda:
Come creare un intervallo di date in Pandas
Come convertire il timestamp in data/ora in Pandas
Come calcolare la differenza tra due date nei panda