Oplossing in panda's: tijdstempel in nanoseconden buiten bereik
Een fout die u kunt tegenkomen bij het gebruik van panda’s is:
OutOfBoundsDatetime : Out of bounds nanosecond timestamp: 2300-01-10 00:00:00
Deze fout treedt op wanneer u probeert een tijdstempel te maken buiten het volgende bereik:
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
Het volgende voorbeeld laat zien hoe u deze fout in de praktijk kunt corrigeren.
Hoe de fout te reproduceren
Stel dat we proberen een datumbereik in panda’s te maken met de volgende drie datums:
- 1/1/2020
- 1/1/2150
- 1/1/2300
We kunnen de functie date_range() gebruiken om te proberen dit datumbereik te maken:
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
We ontvangen de OutOfBoundsDatetime- fout omdat de tijdstempel 1/1/2300 groter is dan de maximale tijdstempel in nanoseconden die door panda’s is toegestaan.
Zelfs als je de tijdstempel niet wilt opslaan met nanoseconden als eenheid, zullen panda’s dit automatisch doen.
Hoe u de fout kunt oplossen
De eenvoudigste manier om deze fout te omzeilen is door het argument error = ‚coerce‘ te gebruiken, dat alle tijdstempels buiten het minimum- of maximumbereik dwingt tot NaT-waarden.
We kunnen bijvoorbeeld de volgende code gebruiken om een datumbereik te maken en automatisch alle tijdstempels buiten het toegestane bereik te forceren naar NaT-waarden:
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)
Het resultaat is een datumbereik met drie datetime-waarden en de laatste datetime is NaT omdat deze de maximale waarde overschrijdt die door panda’s is toegestaan.
Houd er rekening mee dat we deze keer geen fouten ontvangen bij het maken van het datumbereik.
Aanvullende bronnen
In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende fouten in Python kunt oplossen:
Oplossing: Kolommen overlappen elkaar, maar er is geen achtervoegsel opgegeven
Oplossing: Object ’numpy.ndarray‘ heeft geen ‚append‘-attribuut
Oplossing: als u alle scalaire waarden gebruikt, moet u een index doorgeven