So beheben sie das problem in pandas: zeitstempel in nanosekunden außerhalb des zulässigen bereichs


Ein Fehler, der bei der Verwendung von Pandas auftreten kann, ist:

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

Dieser Fehler tritt auf, wenn Sie versuchen, einen Zeitstempel außerhalb des folgenden Bereichs zu erstellen:

 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

Das folgende Beispiel zeigt, wie dieser Fehler in der Praxis behoben werden kann.

So reproduzieren Sie den Fehler

Angenommen, wir versuchen, in Pandas einen Datumsbereich zu erstellen, der die folgenden drei Daten enthält:

  • 1.1.2020
  • 1.1.2150
  • 1.1.2300

Wir können die Funktion date_range() verwenden, um zu versuchen, diesen Datumsbereich zu erstellen:

 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

Wir erhalten den OutOfBoundsDatetime- Fehler, weil der Zeitstempel 1/1/2300 größer ist als der von Pandas maximal zulässige Zeitstempel in Nanosekunden.

Auch wenn Sie den Zeitstempel nicht in Nanosekunden als Einheit speichern möchten, erledigt Pandas dies automatisch.

So beheben Sie den Fehler

Der einfachste Weg, diesen Fehler zu umgehen, ist die Verwendung des Arguments error = ‚coerce‘ , das alle Zeitstempel außerhalb des minimalen oder maximalen Bereichs in NaT-Werte umwandelt.

Beispielsweise können wir den folgenden Code verwenden, um einen Datumsbereich zu erstellen und alle Zeitstempel außerhalb des zulässigen Bereichs automatisch auf NaT-Werte zu setzen:

 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)

Das Ergebnis ist ein Datumsbereich mit drei Datums-/Uhrzeitwerten und der letzte Datums-/Uhrzeitwert ist NaT, da er den von Pandas zulässigen Höchstwert überschritten hat.

Beachten Sie, dass wir dieses Mal beim Erstellen des Datumsbereichs keine Fehlermeldungen erhalten.

Zusätzliche Ressourcen

Die folgenden Tutorials erklären, wie Sie andere häufige Fehler in Python beheben:

Lösung: Spalten überschneiden sich, es ist jedoch kein Suffix angegeben
Problembehebung: Das Objekt „numpy.ndarray“ verfügt nicht über das Attribut „append“.
Lösung: Wenn Sie alle Skalarwerte verwenden, müssen Sie einen Index übergeben

Einen Kommentar hinzufügen

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