Series.dt.floor()
Метод Series.dt.floor() округляет временные метки вниз до указанной частоты. Удобен для приведения логов к одинаковым интервалам. Аналогичные методы — dt.ceil() (вверх) и dt.round() (к ближайшему).
Сигнатура
Series.dt.floor(freq, ambiguous="raise", nonexistent="raise")
Параметры
freq— частота:"min","H","D","15min"и т. д.ambiguous— поведение при двусмысленном времени (DST).nonexistent— поведение при несуществующих метках (DST).
Возвращаемое значение
Series округлённых временных меток.
Примеры
Пример 1. Округление до часа
import pandas as pd
s = pd.Series(pd.to_datetime([
"2026-05-15 09:23:00",
"2026-05-15 09:57:30",
]))
print(s.dt.floor("H"))
0 2026-05-15 09:00:00
1 2026-05-15 09:00:00
dtype: datetime64[ns]
Пример 2. Округление до минуты
Метки с миллисекундной точностью от лога Arduino:
import pandas as pd
s = pd.Series(pd.to_datetime([
"2026-05-15 10:00:35.250",
"2026-05-15 10:00:42.870",
]))
print(s.dt.floor("min"))
0 2026-05-15 10:00:00
1 2026-05-15 10:00:00
dtype: datetime64[ns]
Пример 3. До 15 минут
import pandas as pd
s = pd.Series(pd.to_datetime([
"2026-05-15 10:07:00",
"2026-05-15 10:23:00",
"2026-05-15 10:59:00",
]))
print(s.dt.floor("15min"))
0 2026-05-15 10:00:00
1 2026-05-15 10:15:00
2 2026-05-15 10:45:00
dtype: datetime64[ns]
Пример 4. До дня
import pandas as pd
s = pd.Series(pd.to_datetime([
"2026-05-15 23:55:00",
"2026-05-16 00:05:00",
]))
print(s.dt.floor("D"))
0 2026-05-15
1 2026-05-16
dtype: datetime64[ns]
Пример 5. Группировка показаний по 5 минут
import pandas as pd
df = pd.DataFrame({
"ts": pd.to_datetime([
"2026-05-15 10:01", "2026-05-15 10:04",
"2026-05-15 10:06", "2026-05-15 10:09",
]),
"temp": [22.0, 22.2, 22.5, 22.7],
})
df["bucket"] = df["ts"].dt.floor("5min")
print(df.groupby("bucket")["temp"].mean())
bucket
2026-05-15 10:00:00 22.10
2026-05-15 10:05:00 22.60
Name: temp, dtype: float64
См. также
Примечание
Лицензия и источники
Техническое описание функции адаптировано из официальной документации Pandas (https://pandas.pydata.org/docs/), BSD-3-Clause License. Примеры и пояснения — © AlashEd Wiki.