Короткий ответ
Текстовый столбец с датами приводят через pd.to_datetime(df['col'], format=..., errors='coerce'), после чего с ним можно работать как с датой: сравнивать, сортировать, извлекать компоненты.
Как это работает подробнее
pd.to_datetime парсит строки в объекты Timestamp; если формат дат заранее известен (например, 'DD.MM.YYYY'), явное указание format ускоряет парсинг и исключает неверную автоматическую интерпретацию (путаницу дня и месяца); errors='coerce' превращает непарсящиеся значения в NaT вместо падения с ошибкой.
Пример кода
Пример Python
import pandas as pd
df = pd.DataFrame({'date_str': ['01.02.2024', '15.03.2024', 'invalid']})
df['date'] = pd.to_datetime(df['date_str'], format='%d.%m.%Y', errors='coerce')
print(df)Что использовать на практике
- На практике: после преобразования становится доступен df['col'].dt — аксессор для извлечения года, месяца, дня недели и выполнения арифметики с датами (разница в днях, фильтрация по диапазону); важно сразу проверить df['col'].isna().sum() после coerce, чтобы не потерять строки незаметно.
- Проверка: первые две строки получат корректные Timestamp (1 февраля и 15 марта 2024), а третья строка станет NaT, что видно по выводу и проверяется df['date'].isna().sum() равным 1.
Подводные камни
- Частые ошибки: не указывают format при смешанных или неоднозначных форматах дат (например, "01.02.2024" может означать и 1 февраля, и 2 января в зависимости от локали), из-за чего часть дат парсится неверно без явной ошибки; оставляют даты как object/строки и пытаются сравнивать их лексикографически, что даёт неверный порядок для дат с разным количеством символов.