Функция pd.to_datetime() в pandas: разбор дат

pd.to_datetime(series) превращает строки или числа в тип datetime, после чего открывается аксессор .dt для извлечения года, месяца, дня недели, часа. Без приведения к datetime даты остаются строками, и любые расчёты по времени (разница, группировка по месяцам, ресемпл) невозможны — поэтому это первый шаг работы с временными рядами.

Синтаксис

pd.to_datetime(df['col'], format='%Y-%m-%d', errors='coerce')

Примеры использования

Пример 1: Строки в даты + извлечь месяц и день недели

df['dt'] = pd.to_datetime(df['date'])
df['month'] = df['dt'].dt.to_period('M')
df['dow'] = df['dt'].dt.dayofweek

Результат:

        date         dt   month  dow
0 2026-06-01 2026-06-01 2026-06    0

Пример 2: Группировка выручки по месяцам через ресемпл

df.set_index('dt').resample('ME')['amount'].sum()

Результат:

dt
2026-06-30    45000
2026-07-31    52000
Порешать Python-задачи в тренажёре →

Типичная ошибка

На «грязных» датах указывай 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') на некорректной строке.

Задачи в тренажёре по теме

Вопросы с собеседований по теме

Смежные темы Python

Pandas: временные ряды · Pandas: основы

Другие функции pandas

groupby · merge · pivot_table · apply · value_counts · drop_duplicates

Открыть Python-тренажёр (556 задач) →