pd.to_datetime(series) превращает строки или числа в тип datetime, после чего открывается аксессор .dt для извлечения года, месяца, дня недели, часа. Без приведения к datetime даты остаются строками, и любые расчёты по времени (разница, группировка по месяцам, ресемпл) невозможны — поэтому это первый шаг работы с временными рядами.
На «грязных» датах указывай errors='coerce' — некорректные строки станут NaT (Not a Time), а не уронят весь вызов. Для неоднозначных форматов (01/02/2026) задавай format явно, иначе pandas может перепутать день и месяц. dayofweek нумерует с понедельника = 0 (не как SQL strftime %w с воскресенья). А аксессор .dt работает только после приведения к datetime.
Где спрашивают на собеседовании
to_datetime и .dt — фундамент любой задачи с датами. Спрашивают, как из строки получить дату, извлечь период/день недели и сгруппировать по месяцам (resample). Ценят errors='coerce' для грязных данных и знание, что .dt требует datetime-тип.
FAQ: частые вопросы про to_datetime
Как из строки получить дату в pandas?
pd.to_datetime(df['col']) вернёт колонку типа datetime. Для нестандартного формата укажи format='...', для грязных данных — errors='coerce' (плохие значения станут NaT).
Как извлечь месяц или день недели из даты?
Через аксессор .dt: series.dt.month, series.dt.dayofweek (0 — понедельник), series.dt.to_period('M') для группировки по месяцам. Работает только на datetime-типе.
Что такое NaT в pandas?
NaT (Not a Time) — аналог NaN для дат: так помечаются пропущенные или нераспарсенные значения времени. Появляется, например, при to_datetime(..., errors='coerce') на некорректной строке.