Python Pandas to_datetime Штамп времени наносекундной границы за пределы панды. - PullRequest
0 голосов
/ 25 апреля 2018

Я использую Python 2 - я отстаиваю свой код - поэтому, возможно, эта проблема исчезла.Используя панд, я могу создать дату и время следующим образом:

import pandas as pd
big_date= pd.datetime(9999,12,31)
print big_date
9999-12-31 00:00:00
big_date2 = pd.to_datetime(big_date)
 . . .
Out of bounds nanosecond timestamp: 9999-12-31 00:00:00

Я понимаю причину ошибки в том, что в дате слишком большое количество наносекунд.Я также знаю, что big_date2 = pd.to_datetime(big_date, errors='ignore') будет работать.Однако в моей ситуации у меня есть столбец с предполагаемыми датами (считанный с сервера SQL), и я действительно хочу, чтобы он изменил недопустимые данные / даты на NaT.По сути, я использовал pd.to_datetime в качестве проверки правильности.Для Панд, с одной стороны, 9999-12-31 является действительной датой, а с другой - нет.Это означает, что я не могу использовать это и должен был придумать что-то еще.

Я поигрался с аргументами в pandas to_datetime и не смог решить это.

Я посмотрел другие вопросы / проблемы такого рода и не нашел ответа.

1 Ответ

0 голосов
/ 30 июля 2019

У меня похожая проблема, и я смог найти решение.

У меня есть кадр данных pandas с одним столбцом, который содержит дату и время (извлечено из таблицы базы данных, где столбец имел тип данных DateTime2), но мне нужно иметь возможность представлять дату, которая в будущем будет дальше, чем Timestamp.max значение.

К счастью, мне не нужно беспокоиться о временной части столбца datetime - фактически это всегда было 00:00:00 (я не создавал дизайн базы данных и, да, вероятно, это должен был быть Date тип данных, а не тип данных DateTime2). Таким образом, я смог обойти проблему, преобразовав столбец pandas dataframe в тип даты. Например:

for i, row in df.iterrows():
    df.set_value(i, 'DateColumn', datetime.datetime(9999, 12, 31).date())

устанавливает все значения в столбце на дату 9999-12-31, и вы больше не получаете ошибок при использовании этого столбца.

Итак, если вы можете позволить себе потерять временную часть даты, которую вы пытаетесь использовать, вы можете обойти ограничение значений даты и времени в кадре данных путем преобразования в дату.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...