сравнить pandas столбец с переменной даты и времени - PullRequest
0 голосов
/ 04 мая 2020

У меня есть фрейм данных pandas со столбцом, содержащим значения даты и времени. Я использовал pd.to_datetime () для преобразования значений в объекты datetime. Я хочу сравнить эти значения с одной переменной datetime, такой как TODAY. Я получил СЕГОДНЯ от datetime.date.today (). Вот мой код

data['date'] = pd.to_datetime(data['date'])
data['choose'] =  data['date'] > datetime.date.today()

Однако, это не работает, и я получил эту ошибку:

TypeError: Invalid comparison between dtype=datetime64[ns] and date

Я получил другой способ, который заключается в создании столбца, который содержит СЕГОДНЯ для каждого строка.

data['today'] = datetime.date.today() 
data['today'] = pd.to_datetime(data['today'])
data['choose'] =  data['date'] > data['today']

Но это неэффективно, так как требует памяти, поскольку создает другой столбец. Какой самый эффективный способ добиться этого?

1 Ответ

1 голос
/ 05 мая 2020
  • .dt.date преобразует ряд данных в datetime.date, что можно сравнить с date.today().
import pandas as pd
from datetime import date, datetime

# setup dataframe
data = {'date': pd.bdate_range(datetime.today(), periods=15).tolist()}
df = pd.DataFrame(data)

# Boolean
df['choose'] = df['date'].dt.date > date.today()

print(df)

      date  choose
2020-05-04   False
2020-05-05    True
2020-05-06    True
2020-05-07    True
2020-05-08    True
2020-05-11    True
2020-05-12    True
2020-05-13    True
2020-05-14    True
2020-05-15    True
2020-05-18    True
2020-05-19    True
2020-05-20    True
2020-05-21    True
2020-05-22    True
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...