#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. Или, в частности, содержимое вашей базы данных имеет несовместимое значение. В любом случае, похоже, проблема в базе данных, а не в пандах.