Как сравнить даты со строкой в ​​пандах? - PullRequest
0 голосов
/ 10 июня 2018

У меня есть df['date'] = pd.to_datetime(df['Transaction_Date'], format = '%d/%m/%Y'), который, кажется, работает нормально.Тем не менее, я действительно раздражаюсь, что мне все еще приходится использовать формат месяц / день / год при сравнении дат.Как и в

df[(df['date'] > "04/10/2018") & (df['date'] < "05/10/2018")]

Есть ли способ убедить панд в разрешении форматирования дня / месяца / года при сравнении дат?

Ответы [ 2 ]

0 голосов
/ 11 июня 2018

Похоже, что вам нужен какой-то "синтаксический сахар" ...

Если у вас есть лямбда-функция, такая как

l = lambda x: datetime(*[int(_) for _ in x.split('/')[::-1]])

, вы можете просто обернуть даты, используя day/month/year и функция преобразует это для вас.

df[(df['date'] > l("04/10/2018")) & (df['date'] < l("05/10/2018"))]

Моя функция - всего лишь пример, вы можете определить любую функцию, которая вам подойдет.Есть бесконечные возможности

0 голосов
/ 11 июня 2018

Вы не можете, если вы не преобразуете в datetime заранее.

from functools import partial

f = partial(pd.to_datetime, dayfirst=True)
df[(df['date'] > f("04/10/2018")) & (df['date'] < f("05/10/2018"))]

В качестве альтернативы,

df['date'].between(f("04/10/2018"), f("05/10/2018"))

В противном случае, если вы хотите сравнить строки, формат должен быть ГГГГ-ММ-ДД.

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