Spec-Zone.ru › Polars

polars.Expr.dt.truncate

Expr.dt.truncate(
    every: str | dt.timedelta | Expr,
) → Expr

Разделяет диапазон дат/даты и времени на интервалы.

Каждая дата/дата и время сопоставляется с началом своего интервала с использованием соответствующей местной даты и времени. Обратите внимание:

  • Недельные интервалы начинаются в понедельник.
  • Все остальные интервалы начинаются с эпохи 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 │
└─────────────────────┴─────────────────────┘

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API