Сбой сравнения панд и даты-времени - PullRequest
0 голосов
/ 29 августа 2018

У меня был фрагмент кода, который работал исторически, который, кажется, случайно сломался на этот раз. Ошибка является ошибкой сравнения типов:

df = df[df['loaded'] > last_load]
Traceback (most recent call last):

  File "<ipython-input-13-62572f9caa45>", line 1, in <module>
    df = df[df['loaded'] > last_mart]

  File "C:\Users\user\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\core\ops.py", line 1201, in wrapper
    pd.DatetimeIndex)

  File "C:\Users\user\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\core\ops.py", line 1098, in dispatch_to_index_op
    result = op(left_idx, right)

  File "C:\Users\user\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\core\indexes\datetimes.py", line 133, in wrapper
    (type(other), str(other)))

TypeError: <class 'datetime.date'> type object 2018-08-15

Фрагмент кода очень прост:

df['loaded'] = pd.to_datetime(df['loaded'])
last_load = datetime.datetime.now().date() - datetime.timedelta(weeks = 2)
df = df[df['loaded'] >= last_load]

При просмотре типов я подтвердил, что last_load - это datetime.date, а df ['loaded '] - datetime64 [ns].

Глядя на прямые данные в кадре данных, не было случайных изменений в форматировании или нечетных новых точек данных. Кажется, ошибка ссылается на last_load, так как это дата, указанная в определении last_load.

Я не уверен, в чем проблема. Любая помощь?

1 Ответ

0 голосов
/ 29 августа 2018

Я обновил pandas с момента последнего запуска этого скрипта, и по какой-то причине pandas больше не преобразует datetime в str автоматически при анализе. Таким образом, простая обёртка str для datetime решает проблему. Это было для Python 3.6.

last_mart = datetime.datetime.now().date() - datetime.timedelta(weeks = 2)
df = df[df['loaded'] >= str(last_mart)]
df = df.drop_duplicates(subset = 'sdc_id')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...