datetimeindex - pandas python
pandas fuera de límites marca de tiempo de nanosegundos después del desplazamiento hacia adelante más la adición de un mes de desplazamiento (2)
Dado que los pandas representan marcas de tiempo en resolución de nanosegundos, el intervalo de tiempo que se puede representar utilizando un entero de 64 bits se limita a aproximadamente 584 años
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'')
Y su valor está fuera de este rango 2262-05-01 00:00:00 y, por lo tanto, el error de outofbounds
Directamente de: http://pandas-docs.github.io/pandas-docs-travis/timeseries.html#timestamp-limitations
Estoy confundido sobre cómo los pandas volaron fuera de los límites para los objetos de fecha y hora con estas líneas:
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))
Aquí all_treatments.iloc[i,micolix]
es una fecha y hora establecida por pd.to_datetime(all_treatments[''INDATUMA''], errors=''coerce'',format=''%Y%m%d'')
, e INDATUMA
es información de fecha en el Formato 20070125
.
Esta lógica parece funcionar con datos simulados (no hay errores, las fechas tienen sentido), por lo que en este momento no puedo reproducir mientras fallan todos mis datos con el siguiente error:
pandas.tslib.OutOfBoundsDatetime: Out of bounds nanosecond timestamp: 2262-05-01 00:00:00
La configuración del parámetro de errors
en pd.to_datetime
en ''coerce''
hace que los valores fuera de límites se NaT
por NaT
. Citando los docs :
Si ''coerce'', el análisis no válido se establecerá como NaT
P.ej:
datetime_variable = pd.to_datetime(datetime_variable, errors = ''coerce'')
Esto no corrige los datos (obviamente), pero aún así permite procesar los puntos de datos que no son NaT.