pandas out of bounds nanosecond timestamp après offset rollorward plus ajout d'un mois offset

je suis confus comment les pandas ont soufflé hors limites pour les objets datetime avec ces lignes:

import pandas as pd
BOMoffset = pd.tseries.offsets.MonthBegin()
# here some code sets the all_treatments dataframe and the newrowix, micolix, mocolix counters
all_treatments.iloc[newrowix,micolix] = BOMoffset.rollforward(all_treatments.iloc[i,micolix] + pd.tseries.offsets.DateOffset(months = x))
all_treatments.iloc[newrowix,mocolix] = BOMoffset.rollforward(all_treatments.iloc[newrowix,micolix]+ pd.tseries.offsets.DateOffset(months = 1))

Ici all_treatments.iloc[i,micolix] est une datetime définie par pd.to_datetime(all_treatments['INDATUMA'], errors='coerce',format='%Y%m%d') et INDATUMA est la date de l'information dans le format 20070125.

cette logique semble fonctionner sur des données simulées( pas d'erreurs, les dates ont un sens), donc pour le moment je ne peux pas reproduire alors qu'elle échoue dans l'ensemble de mes données avec l'erreur suivante:

pandas.tslib.OutOfBoundsDatetime: Out of bounds nanosecond timestamp: 2262-05-01 00:00:00
24
demandé sur László 2015-10-01 15:54:51

2 réponses

étant donné que pandas représente des horodateurs en résolution nanoseconde, la durée qui peut être représentée à l'aide d'un entier 64 bits est limitée à environ 584 ans

pd.Timestamp.min
Out[54]: Timestamp('1677-09-22 00:12:43.145225')

In [55]: pd.Timestamp.max
Out[55]: Timestamp('2262-04-11 23:47:16.854775807')

Et votre valeur est en dehors de cette plage 2262-05-01 00:00:00 et donc la outofbounds erreur

tout Droit sorti de: http://pandas-docs.github.io/pandas-docs-travis/timeseries.html#timestamp-limitations

29
répondu jetpackdata.com 2016-05-14 12:29:02

errors paramètre pd.to_datetime'coerce' remplacement des limites des valeurs NaT. Citant l' docs:

Si ‘forcer’, alors invalide analyse sera défini comme NaT

par exemple:

datetime_variable = pd.to_datetime(datetime_variable, errors = 'coerce')

cela ne corrige pas les données (évidemment), mais permet tout de même le traitement des points de données non-NaT.

8
répondu Pawel Kranzberg 2018-03-26 17:27:27