Jak naprawić w pandach: znacznik czasu w nanosekundach poza zakresem


Błąd, który możesz napotkać podczas korzystania z pand, to:

 OutOfBoundsDatetime : Out of bounds nanosecond timestamp: 2300-01-10 00:00:00

Ten błąd występuje, gdy próbujesz utworzyć znacznik czasu spoza następującego zakresu:

 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

Poniższy przykład pokazuje, jak w praktyce skorygować ten błąd.

Jak odtworzyć błąd

Załóżmy, że próbujemy utworzyć w pandach zakres dat zawierający trzy następujące daty:

  • 1.01.2020
  • 1.01.2150
  • 1/1/2300

Możemy użyć funkcji date_range() , aby spróbować utworzyć ten zakres dat:

 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

Otrzymujemy błąd OutOfBoundsDatetime , ponieważ znacznik czasu 1/1/2300 jest większy niż maksymalny znacznik czasu w nanosekundach dozwolony przez pandy.

Nawet jeśli nie chcesz przechowywać znacznika czasu, używając nanosekund jako jednostki, pandy zrobią to automatycznie.

Jak naprawić błąd

Najłatwiejszym sposobem obejścia tego błędu jest użycie argumentu error = „coerce” , który wymusza na wartościach NaT wszystkie znaczniki czasu spoza minimalnego lub maksymalnego zakresu.

Na przykład możemy użyć poniższego kodu, aby utworzyć zakres dat i automatycznie wymusić na wszystkich znacznikach czasu spoza dozwolonego zakresu wartości 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)

Wynikiem jest zakres dat z trzema wartościami datetime, a ostatnia datetime to NaT, ponieważ przekroczyła maksymalną wartość dozwoloną przez pandy.

Pamiętaj, że tym razem podczas tworzenia zakresu dat nie otrzymaliśmy żadnych błędów.

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak naprawić inne typowe błędy w Pythonie:

Jak naprawić: Kolumny nakładają się, ale nie określono żadnego sufiksu
Jak naprawić: Obiekt „numpy.ndarray” nie ma atrybutu „dołącz”.
Jak naprawić: jeśli używasz wszystkich wartości skalarnych, musisz przekazać indeks

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *