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

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert