Comment réparer dans Pandas : horodatage en nanosecondes hors limites
Une erreur que vous pouvez rencontrer lors de l’utilisation de pandas est :
OutOfBoundsDatetime: Out of bounds nanosecond timestamp: 2300-01-10 00:00:00
Cette erreur se produit lorsque vous tentez de créer un horodatage situé en dehors de la plage suivante :
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’exemple suivant montre comment corriger cette erreur dans la pratique.
Comment reproduire l’erreur
Supposons que nous essayions de créer une plage de dates dans pandas contenant les trois dates suivantes :
- 1/1/2020
- 1/1/2150
- 1/1/2300
Nous pouvons utiliser la fonction date_range() pour tenter de créer cette plage de dates :
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
Nous recevons l’erreur OutOfBoundsDatetime car l’horodatage 1/1/2300 est supérieur à l’horodatage maximal en nanosecondes autorisé par les pandas.
Même si vous ne souhaitez pas stocker l’horodatage en utilisant les nanosecondes comme unité, les pandas le feront automatiquement.
Comment réparer l’erreur
Le moyen le plus simple de contourner cette erreur consiste à utiliser l’argument error = ‘coerce’ , qui contraint tous les horodatages en dehors de la plage minimale ou maximale aux valeurs NaT.
Par exemple, nous pouvons utiliser le code suivant pour créer une plage de dates et forcer automatiquement tous les horodatages en dehors de la plage autorisée aux valeurs 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') #show datetimes print(some_dates) DatetimeIndex(['2000-01-01', '2150-01-01', 'NaT'], dtype='datetime64[ns]', freq=None)
Le résultat est une plage de dates avec trois valeurs datetime et la dernière datetime est NaT car elle a dépassé la valeur maximale autorisée par les pandas.
Notez que nous ne recevons aucune erreur cette fois lors de la création de la plage de dates.
Ressources additionnelles
Les didacticiels suivants expliquent comment corriger d’autres erreurs courantes en Python :
Comment réparer : les colonnes se chevauchent mais aucun suffixe n’est spécifié
Comment réparer : l’objet ‘numpy.ndarray’ n’a pas d’attribut ‘append’
Comment réparer : si vous utilisez toutes les valeurs scalaires, vous devez transmettre un index