Come risolvere il problema in panda: timestamp in nanosecondi fuori intervallo
Un errore che potresti riscontrare quando usi i panda è:
OutOfBoundsDatetime : Out of bounds nanosecond timestamp: 2300-01-10 00:00:00
Questo errore si verifica quando tenti di creare un timestamp non compreso nell’intervallo seguente:
import pandas as pd #display minimum timestamp allowed print (pd. Timestamp . min ) 1677-09-21 00:12:43.145224193 #display maximum timestamp allowed print (pd. Timestamp . max ) 2262-04-11 23:47:16.854775807
L’esempio seguente mostra come correggere questo errore nella pratica.
Come riprodurre l’errore
Supponiamo di provare a creare un intervallo di date in panda contenente le seguenti tre date:
- 1/1/2020
- 1/1/2150
- 1/1/2300
Possiamo utilizzare la funzione date_range() per tentare di creare questo intervallo di date:
import pandas as pd #attempt to create date range some_dates = pd. date_range (start=' 1/1/2000 ', end=' 1/1/2300 ', periods= 3 ) OutOfBoundsDatetime : Out of bounds nanosecond timestamp: 2300-01-10 00:00:00
Stiamo ricevendo l’errore OutOfBoundsDatetime perché il timestamp 1/1/2300 è maggiore del timestamp massimo in nanosecondi consentito dai panda.
Anche se non desideri memorizzare il timestamp utilizzando i nanosecondi come unità, i panda lo faranno automaticamente.
Come correggere l’errore
Il modo più semplice per aggirare questo errore è utilizzare l’argomento error = ‘coerce’ , che forza tutti i timestamp esterni all’intervallo minimo o massimo ai valori NaT.
Ad esempio, possiamo utilizzare il codice seguente per creare un intervallo di date e forzare automaticamente tutti i timestamp al di fuori dell’intervallo consentito sui valori NaT:
import pandas as pd #create date range some_dates = ['1/1/2000', '1/1/2150', '1/1/2300'] #convert date range to datetime and automatically coerce errors some_dates = pd. to_datetime (some_dates, errors = ' coerce ') #showdatetimes print (some_dates) DatetimeIndex(['2000-01-01', '2150-01-01', 'NaT'], dtype='datetime64[ns]', freq=None)
Il risultato è un intervallo di date con tre valori datetime e l’ultimo datetime è NaT perché ha superato il valore massimo consentito dai panda.
Tieni presente che questa volta non riceviamo alcun errore durante la creazione dell’intervallo di date.
Risorse addizionali
I seguenti tutorial spiegano come correggere altri errori comuni in Python:
Come risolvere il problema: le colonne si sovrappongono ma non è specificato alcun suffisso
Come risolvere il problema: l’oggetto “numpy.ndarray” non ha un attributo “append”.
Come risolvere il problema: se utilizzi tutti i valori scalari, devi passare un indice