Дата и время в Pandas
Для работы с временем в Pandas есть тип datetime64[ns] и набор удобных
функций: pd.to_datetime для парсинга, .dt для доступа к компонентам
(год, месяц, час), resample для пересэмплирования временных рядов.
Когда использовать
Лог измерений с временной меткой.
Группировка по часу/дню/неделе.
Поиск событий в окне ± несколько минут.
Пример 1. Парсинг строки в дату
import pandas as pd
s = pd.Series(["2026-01-15 10:00", "2026-01-15 10:05"])
t = pd.to_datetime(s)
print(t)
print(t.dtype)
Output:
0 2026-01-15 10:00:00
1 2026-01-15 10:05:00
dtype: datetime64[ns]
datetime64[ns]
Пример 2. parse_dates при чтении CSV
import pandas as pd
df = pd.read_csv("log.csv", parse_dates=["timestamp"])
print(df.dtypes)
Output:
timestamp datetime64[ns]
temp float64
dtype: object
Пример 3. .dt аксессор
import pandas as pd
t = pd.to_datetime(["2026-01-15 10:30", "2026-02-20 14:45"])
s = pd.Series(t)
print("год:", s.dt.year.tolist())
print("час:", s.dt.hour.tolist())
print("день недели:", s.dt.day_name().tolist())
Output:
год: [2026, 2026]
час: [10, 14]
день недели: ['Thursday', 'Friday']
Пример 4. Временной индекс
import pandas as pd
idx = pd.date_range("2026-01-01", periods=5, freq="D")
df = pd.DataFrame({"v": [10, 12, 11, 13, 15]}, index=idx)
print(df)
Output:
v
2026-01-01 10
2026-01-02 12
2026-01-03 11
2026-01-04 13
2026-01-05 15
Пример 5. resample
import pandas as pd
idx = pd.date_range("2026-01-01", periods=6, freq="h")
df = pd.DataFrame({"v": [1, 2, 3, 4, 5, 6]}, index=idx)
print(df.resample("3h").sum())
Output:
v
2026-01-01 00:00:00 6
2026-01-01 03:00:00 15
Пример 6. Сдвиг по времени
import pandas as pd
t = pd.Timestamp("2026-01-15 10:00")
print(t + pd.Timedelta(hours=2))
print(t + pd.offsets.Day(7))
Output:
2026-01-15 12:00:00
2026-01-22 10:00:00
Пример 7. Разница двух дат
import pandas as pd
s = pd.to_datetime(pd.Series(["2026-01-15 10:00", "2026-01-15 10:05"]))
delta = s.iloc[1] - s.iloc[0]
print("разница:", delta)
print("в секундах:", delta.total_seconds())
Output:
разница: 0 days 00:05:00
в секундах: 300.0
Подводные камни
В разных локалях формат «01/02/2026» может быть и январь, и февраль. Указывайте
format="%d/%m/%Y"явно.resampleтребует временного индекса — иначеTypeError.Часовые пояса:
tz_localizeдля «наивных» дат,tz_convertдля уже локализованных.
См. также
Примечание
Лицензия и источники
Техническое описание адаптировано из официальной документации Pandas (https://pandas.pydata.org/docs/), BSD-3-Clause License. Перевод на русский, примеры и пояснения — © AlashEd Wiki.