Обработка ошибки OutOfBoundsDatetime в панд

#python #pandas #dataframe

Вопрос:

Я пытаюсь применить несколько функций к фрейму данных pandas, но получаю ошибку OutOfBoundsDatetime —

 def data_cleanser(data):  clean_df = data.str.strip().str.replace(r'\', '')  return clean_df  connection = pyodbc.connect(conn) sql = 'SELECT * FROM {}'.format(tablename)  df = pd.read_sql_query(sql, connection) df.replace([None], np.nan, inplace=True) df.fillna('', inplace=True) df=df.applymap(str) df = df.apply(lambda x: data_cleanser(x))  

Сообщение об ошибке:

 During handling of the above exception, another exception occurred:  Traceback (most recent call last):  File "/Python_Scripts/lib64/python3.4/site-packages/pandas/core/internals.py", line 763, in replace  copy=not inplace) for b in blocks]  File "/Python_Scripts/lib64/python3.4/site-packages/pandas/core/internals.py", line 763, in <listcomp>  copy=not inplace) for b in blocks]  File "/Python_Scripts/lib64/python3.4/site-packages/pandas/core/internals.py", line 2135, in convert  blocks = self.split_and_operate(None, f, False)  File "/Python_Scripts/lib64/python3.4/site-packages/pandas/core/internals.py", line 478, in split_and_operate  nv = f(m, v, i)  File "/Python_Scripts/lib64/python3.4/site-packages/pandas/core/internals.py", line 2125, in f  values = fn(v.ravel(), **fn_kwargs)  File "/Python_Scripts/lib64/python3.4/site-packages/pandas/core/dtypes/cast.py", line 807, in soft_convert_objects  values = lib.maybe_convert_objects(values, convert_datetime=datetime)  File "pandas/_libs/src/inference.pyx", line 1290, in pandas._libs.lib.maybe_convert_objects  File "pandas/_libs/tslib.pyx", line 1575, in pandas._libs.tslib.convert_to_tsobject  File "pandas/_libs/tslib.pyx", line 1669, in pandas._libs.tslib.convert_datetime_to_tsobject  File "pandas/_libs/tslib.pyx", line 1848, in pandas._libs.tslib._check_dts_bounds pandas._libs.tslib.OutOfBoundsDatetime: Out of bounds nanosecond timestamp: 1-01-01 07:00:00  

Образец фрейма данных:

назначение_id время начала время окончания emp_id
302205 2016-10-26 17:30:00 2016-10-26 18:30:00 45807
462501 2017-04-10 13:00:00 натуральный 45807

Как я могу избежать этой ошибки?

Комментарии:

1. Похоже, что одно из ваших свиданий заканчивается 1 годом нашей эры. Что, конечно, выходит за рамки pandas временных меток. Было бы полезно, если бы у нас был образец вашего фрейма данных/ввода базы данных, чтобы понять, почему/где это происходит.

2. Теперь в исходный вопрос добавлен образец фрейма данных

3. Было бы это из-за ценностей NaT?

4. эти данные образца не вызывают ошибку. Где-то в ваших данных есть 1-01-01 07:00:00 временная метка. Возможно, пытается прочитать sql без разбора дат…

5. У вас нет никакого показанного кода, который анализирует Datetime (явно). Мое лучшее предположение состояло бы в том, что существует несовместимость между некоторым значением в базе данных и тем, как оно импортируется в pandas. Или, в частности, содержимое вашей базы данных имеет несовместимое значение. В любом случае, похоже, проблема в базе данных, а не в пандах.