У меня есть DataFrame df_holiday, и я хочу выбрать строку, которая состоит из ближайшей ближайшей даты от сегодняшней даты, чтобы извлечь название праздника.
+----------+---------------------+
| date | name |
+----------+---------------------+
| 01012019 | Neujahr |
| 06012019 | Heilige Drei Könige |
| 19042019 | Karfreitag |
| 22042019 | Ostermontag |
| 01052019 | Tag der Arbeit |
| 10062019 | Pfingstmontag |
+----------+---------------------+
Если я сделаю type(df_holiday['date'][0])
, он выдаст str
Теперь я хочу преобразовать столбец в формат даты и времени, используя это:
import datetime
df_holiday['date'] = df_holiday['date'].apply(lambda x: datetime.datetime.strptime(x, '%d%m%Y'))
Первый вопросздесь: Док говорит, что он вернет дату и время, но в моем случае я получаю метку времени, почему?
type(df_holiday['date'][0])
pandas._libs.tslibs.timestamps.Timestamp
print(df_holiday['date'][0]
Timestamp('2019-01-01 00:00:00')
Я нашел этот пост от dawg , который предложил следующую процедуру:
min([d for d in df_holiday['date'] if d> datetime.date.today()], key=lambda s:
datetime.datetime.strptime(s, "%d%m%Y").date()-datetime.date.today())
Поскольку значения в столбце даты являются временными метками, я получил
TypeError: Невозможно сравнить тип 'Timestamp' с типом 'date'
Iдумаю, что это сработает, если возможно преобразовать столбец даты в правильный формат даты и времени, а не в формат отметки времени.Как мне этого добиться?Или есть ли лучшее решение для моего случая?