Spec-Zone.ru › Polars

polars.LazyFrame.map_batches

LazyFrame.map_batches(
    function: Callable[[DataFrame],
    DataFrame],
    *,
    predicate_pushdown: bool = False,
    projection_pushdown: bool = False,
    slice_pushdown: bool = False,
    no_optimizations: bool | None = None,
    schema: None | SchemaDict = None,
    validate_output_schema: bool = True,
    streamable: bool = False,
) → LazyFrame

Применить пользовательскую функцию.

Важно, чтобы функция возвращала DataFrame Polars.

движок:В памятиПотоковая обработкаРаспределённая обработка
Параметры:
function

Лямбда-функция или функция для применения.

predicate_pushdown

Разрешить оптимизации проталкивания предикатов проходить через этот узел.

projection_pushdown

Разрешить оптимизации проталкивания проекций проходить через этот узел.

slice_pushdown

Разрешить оптимизации проталкивания срезов проходить через этот узел.

no_optimizations

Устарело с версии 1.30.0: Этот параметр устарел и будет удалён в будущей версии. Теперь для параметров _pushdown по умолчанию установлено значение False, поэтому этот параметр больше не нужен.

schema

Выходная схема функции. Если задано значение None, предполагается, что применённая функция не изменит схему.

validate_output_schema

Крайне важно, чтобы схема Polars была корректной. Этот флаг гарантирует, что выходная схема функции будет проверена на соответствие ожидаемой схеме. Если установить значение False, проверка выполняться не будет, что может привести к трудноотлаживаемым ошибкам.

streamable

Можно ли выполнять переданную функцию с потоковым движком. Это означает, что функция должна выдавать одинаковый результат как при выполнении пакетами, так и при выполнении над полным набором данных.

Предупреждение

Значение schema для LazyFrame всегда должно быть корректным. Вызывающая сторона этой функции должна обеспечить соблюдение данного условия.

Важно правильно задавать флаги оптимизации. Например, если пользовательская функция агрегирует столбец, не следует разрешать predicate_pushdown, поскольку оно удаляет строки и влияет на результаты агрегации.

Примечания

UDF, переданная в map_batches, должна быть чистой, то есть не должна изменять состояние, отличное от её аргументов, или зависеть от него.

Примеры

>>> lf = (  
...     pl.LazyFrame(
...         {
...             "a": pl.int_range(-100_000, 0, eager=True),
...             "b": pl.int_range(0, 100_000, eager=True),
...         }
...     )
...     .map_batches(lambda x: 2 * x, streamable=True)
...     .collect(engine="streaming")
... )
shape: (100_000, 2)
┌─────────┬────────┐
│ a       ┆ b      │
│ ---     ┆ ---    │
│ i64     ┆ i64    │
╞═════════╪════════╡
│ -200000 ┆ 0      │
│ -199998 ┆ 2      │
│ -199996 ┆ 4      │
│ -199994 ┆ 6      │
│ …       ┆ …      │
│ -8      ┆ 199992 │
│ -6      ┆ 199994 │
│ -4      ┆ 199996 │
│ -2      ┆ 199998 │
└─────────┴────────┘

© 2020 Ritchie Vink
© 2022 Polars contributors
Licensed under the MIT License.
https://docs.pola.rs/api/python/stable/reference/lazyframe/api/polars.LazyFrame.map_batches.html

Spec-Zone.ru

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