Как проверить истекшую дату в пандах? - PullRequest
0 голосов
/ 27 января 2019

У меня есть столбец даты в этом формате: '2687-12-31 00:00:00.000'.

Когда я пытаюсь проверить срок действия в этом столбце:

import datetime
new_df = original_df[(original_df["RecordEndDate"] > datetime.datetime.now())]

Я получаю эту ошибку:

TypeError: can't compare datetime.datetime to str

и когда я пытаюсь преобразовать формат, используя:

original_df['RecordEndDate'] = pd.to_datetime(original_df['RecordEndDate'], 
                                              format='%Y/%m/%d %H:%M:%S.%f')

Я получаю эту ошибку:

ValueError: time data '2687-12-31 00:00:00.000' doesn't match format specified

Есть идеи?

1 Ответ

0 голосов
/ 27 января 2019

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

arr = pd.Series(['2687-12-31 00:00:00.000', '2007-12-3'])
def func(d):
    try:
        return pd.to_datetime(d) > pd.datetime.now()
    except ValueError:
        return True

arr[arr.apply(lambda v: func(v))]

0    2687-12-31 00:00:00.000
dtype: object

Проблема возникает потому, что максимальное время в пандах где-то до 2262 года.

pd.Timestamp.max
OUT[1]: Timestamp('2262-04-11 23:47:16.854775807')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...