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
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
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.