polars.Expr.dt.truncate
-
Разделяет диапазон дат/даты и времени на интервалы.
Каждая дата/дата и время сопоставляется с началом своего интервала с использованием соответствующей местной даты и времени. Обратите внимание:
- Недельные интервалы начинаются в понедельник.
- Все остальные интервалы начинаются с эпохи Unix (1970-01-01).
- Неоднозначные результаты локализуются с использованием смещения DST исходной временной метки — например, усечение
'2022-11-06 01:30:00 CST'с шагом'1h'даёт'2022-11-06 01:00:00 CST', тогда как усечение'2022-11-06 01:30:00 CDT'с шагом'1h'даёт'2022-11-06 01:00:00 CDT'.
- Параметры:
-
- every
-
Размер каждого интервала.
- Возвращает:
-
- Expr
-
Выражение типа данных
DateилиDatetime.
Примечания
Аргумент
everyзадаётся с помощью следующего строкового формата:- 1ns (1 наносекунда)
- 1us (1 микросекунда)
- 1ms (1 миллисекунда)
- 1s (1 секунда)
- 1m (1 минута)
- 1h (1 час)
- 1d (1 календарный день)
- 1w (1 календарная неделя)
- 1mo (1 календарный месяц)
- 1q (1 календарный квартал)
- 1y (1 календарный год)
Под «календарным днём» подразумевается соответствующее время следующего дня (который может длиться не 24 часа из-за перехода на летнее время). То же относится к «календарной неделе», «календарному месяцу», «календарному кварталу» и «календарному году».
Примеры
>>> from datetime import timedelta, datetime >>> df = ( ... pl.datetime_range( ... datetime(2001, 1, 1), ... datetime(2001, 1, 2), ... timedelta(minutes=225), ... eager=True, ... ) ... .alias("datetime") ... .to_frame() ... ) >>> df shape: (7, 1) ┌─────────────────────┐ │ datetime │ │ --- │ │ datetime[μs] │ ╞═════════════════════╡ │ 2001-01-01 00:00:00 │ │ 2001-01-01 03:45:00 │ │ 2001-01-01 07:30:00 │ │ 2001-01-01 11:15:00 │ │ 2001-01-01 15:00:00 │ │ 2001-01-01 18:45:00 │ │ 2001-01-01 22:30:00 │ └─────────────────────┘ >>> df.select(pl.col("datetime").dt.truncate("1h")) shape: (7, 1) ┌─────────────────────┐ │ datetime │ │ --- │ │ datetime[μs] │ ╞═════════════════════╡ │ 2001-01-01 00:00:00 │ │ 2001-01-01 03:00:00 │ │ 2001-01-01 07:00:00 │ │ 2001-01-01 11:00:00 │ │ 2001-01-01 15:00:00 │ │ 2001-01-01 18:00:00 │ │ 2001-01-01 22:00:00 │ └─────────────────────┘ >>> truncate_str = df.select(pl.col("datetime").dt.truncate("1h")) >>> truncate_td = df.select(pl.col("datetime").dt.truncate(timedelta(hours=1))) >>> truncate_str.equals(truncate_td) True>>> df = ( ... pl.datetime_range( ... datetime(2001, 1, 1), datetime(2001, 1, 1, 1), "10m", eager=True ... ) ... .alias("datetime") ... .to_frame() ... ) >>> df.select( ... "datetime", pl.col("datetime").dt.truncate("30m").alias("truncate") ... ) shape: (7, 2) ┌─────────────────────┬─────────────────────┐ │ datetime ┆ truncate │ │ --- ┆ --- │ │ datetime[μs] ┆ datetime[μs] │ ╞═════════════════════╪═════════════════════╡ │ 2001-01-01 00:00:00 ┆ 2001-01-01 00:00:00 │ │ 2001-01-01 00:10:00 ┆ 2001-01-01 00:00:00 │ │ 2001-01-01 00:20:00 ┆ 2001-01-01 00:00:00 │ │ 2001-01-01 00:30:00 ┆ 2001-01-01 00:30:00 │ │ 2001-01-01 00:40:00 ┆ 2001-01-01 00:30:00 │ │ 2001-01-01 00:50:00 ┆ 2001-01-01 00:30:00 │ │ 2001-01-01 01:00:00 ┆ 2001-01-01 01:00:00 │ └─────────────────────┴─────────────────────┘
Expr.dt.truncate(
every: str | dt.timedelta | Expr,
) → Expr
© 2020 Ritchie Vink
© 2022 Polars contributors
Licensed under the MIT License.
https://docs.pola.rs/api/python/stable/reference/expressions/api/polars.Expr.dt.truncate.html