polars.LazyFrame.map_batches
-
Применить пользовательскую функцию.
Важно, чтобы функция возвращала 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 │ └─────────┴────────┘
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
© 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