python to_datetime pandas вне границ наносекундной метки времени после смещения rollforward плюс добавление смещения месяца




to datetime python pandas (2)

Я смущен, как панды вышли из-под границ для объектов datetime с этими строками:

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

Здесь all_treatments.iloc[i,micolix] - это all_treatments.iloc[i,micolix] время, заданное pd.to_datetime(all_treatments['INDATUMA'], errors='coerce',format='%Y%m%d') , а INDATUMA - информация о дате в формат 20070125 .

Эта логика, похоже, работает с макетными данными (ошибок нет, даты имеют смысл), поэтому на данный момент я не могу воспроизвести, пока он не сработает во всех моих данных со следующей ошибкой:

pandas.tslib.OutOfBoundsDatetime: Out of bounds nanosecond timestamp: 2262-05-01 00:00:00

Поскольку pandas представляет временные метки в наносекундном разрешении, время, которое может быть представлено с использованием 64-битного целого, ограничено примерно 584 годами

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')

И ваше значение вне этого диапазона 2262-05-01 00:00:00 и, следовательно, ошибка outofbounds

Прямо из: http://pandas-docs.github.io/pandas-docs-travis/timeseries.html#timestamp-limitations


Установка параметра errors в pd.to_datetime для 'coerce' приводит к замене значений вне границ на NaT . Цитирование docs :

Если «принуждение», то неверный синтаксический разбор будет установлен как NaT

Например:

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

Это не фиксирует данные (очевидно), но все же позволяет обрабатывать точки данных, отличные от NaT.





datetimeoffset