polars.DataFrame.upsample
-
Выполняет передискретизацию DataFrame с регулярной частотой.
Аргумент
everyзадаётся строкой на следующем языке:- 1ns (1 наносекунда)
- 1us (1 микросекунда)
- 1ms (1 миллисекунда)
- 1s (1 секунда)
- 1m (1 минута)
- 1h (1 час)
- 1d (1 календарный день)
- 1w (1 календарная неделя)
- 1mo (1 календарный месяц)
- 1q (1 календарный квартал)
- 1y (1 календарный год)
- 1i (1 индексное значение)
Или объедините их:
- «3d12h4m25s» # 3 дня, 12 часов, 4 минуты и 25 секунд
Под «календарным днём» подразумевается соответствующее время следующего дня (который может длиться не 24 часа из-за перехода на летнее время). То же относится к «календарной неделе», «календарному месяцу», «календарному кварталу» и «календарному году».
Изменено в версии 0.20.14: Параметр
byпереименован вgroup_by.- Параметры:
-
- time_column
-
Столбец времени, используемый для определения date_range. Обратите внимание, что этот столбец должен быть отсортирован, чтобы результат имел смысл.
- every
-
Интервал будет начинаться с каждой указанной продолжительности.
- group_by
-
Сначала выполните группировку по этим столбцам, а затем передискретизацию для каждой группы.
- maintain_order
-
Сохранять предсказуемый порядок. Это работает медленнее.
- Возвращает:
-
- DataFrame
-
Результат будет отсортирован по
time_column(обратите внимание: если переданы столбцыgroup_by, сортировка будет выполняться только внутри каждой группы).
Примеры
Выполнить передискретизацию DataFrame с заданным интервалом.
>>> from datetime import datetime >>> df = pl.DataFrame( ... { ... "time": [ ... datetime(2021, 2, 1), ... datetime(2021, 4, 1), ... datetime(2021, 5, 1), ... datetime(2021, 6, 1), ... ], ... "groups": ["A", "B", "A", "B"], ... "values": [0, 1, 2, 3], ... } ... ).set_sorted("time") >>> df.upsample( ... time_column="time", every="1mo", group_by="groups", maintain_order=True ... ).select(pl.all().fill_null(strategy="forward")) shape: (7, 3) ┌─────────────────────┬────────┬────────┐ │ time ┆ groups ┆ values │ │ --- ┆ --- ┆ --- │ │ datetime[μs] ┆ str ┆ i64 │ ╞═════════════════════╪════════╪════════╡ │ 2021-02-01 00:00:00 ┆ A ┆ 0 │ │ 2021-03-01 00:00:00 ┆ A ┆ 0 │ │ 2021-04-01 00:00:00 ┆ A ┆ 0 │ │ 2021-05-01 00:00:00 ┆ A ┆ 2 │ │ 2021-04-01 00:00:00 ┆ B ┆ 1 │ │ 2021-05-01 00:00:00 ┆ B ┆ 1 │ │ 2021-06-01 00:00:00 ┆ B ┆ 3 │ └─────────────────────┴────────┴────────┘
DataFrame.upsample(
time_column: str,
*,
every: str | timedelta,
group_by: str | Sequence[str] | None = None,
maintain_order: bool = False,
) → DataFrame
© 2020 Ritchie Vink
© 2022 Polars contributors
Licensed under the MIT License.
https://docs.pola.rs/api/python/stable/reference/dataframe/api/polars.DataFrame.upsample.html