datetimeindex python datetime pandas datetimeoffset

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.