polars.Expr.filter
-
Фильтрует выражение на основе одного или нескольких выражений-предикатов.
Исходный порядок оставшихся элементов сохраняется.
Элементы, для которых фильтр не возвращает True, отбрасываются, в том числе null-значения.
В основном полезно в контексте агрегации. Если нужно фильтровать на уровне DataFrame, используйте
LazyFrame.filter.- Параметры:
-
- predicates
-
Выражение или выражения, возвращающие булев ряд.
- constraints
-
Фильтры столбцов; используйте
name = valueдля фильтрации столбцов по заданному значению. Каждое ограничение будет работать так же, какpl.col(name).eq(value), и неявно объединяться с другими условиями фильтрации с помощью&.
Примеры
>>> df = pl.DataFrame( ... { ... "group_col": ["g1", "g1", "g2"], ... "b": [1, 2, 3], ... } ... ) >>> df.group_by("group_col").agg( ... lt=pl.col("b").filter(pl.col("b") < 2).sum(), ... gte=pl.col("b").filter(pl.col("b") >= 2).sum(), ... ).sort("group_col") shape: (2, 3) ┌───────────┬─────┬─────┐ │ group_col ┆ lt ┆ gte │ │ --- ┆ --- ┆ --- │ │ str ┆ i64 ┆ i64 │ ╞═══════════╪═════╪═════╡ │ g1 ┆ 1 ┆ 2 │ │ g2 ┆ 0 ┆ 3 │ └───────────┴─────┴─────┘Для выражений фильтрации также можно задавать ограничения в виде именованных аргументов.
>>> df = pl.DataFrame( ... { ... "key": ["a", "a", "a", "a", "b", "b", "b", "b", "b"], ... "n": [1, 2, 2, 3, 1, 3, 3, 2, 3], ... }, ... ) >>> df.group_by("key").agg( ... n_1=pl.col("n").filter(n=1).sum(), ... n_2=pl.col("n").filter(n=2).sum(), ... n_3=pl.col("n").filter(n=3).sum(), ... ).sort(by="key") shape: (2, 4) ┌─────┬─────┬─────┬─────┐ │ key ┆ n_1 ┆ n_2 ┆ n_3 │ │ --- ┆ --- ┆ --- ┆ --- │ │ str ┆ i64 ┆ i64 ┆ i64 │ ╞═════╪═════╪═════╪═════╡ │ a ┆ 1 ┆ 4 ┆ 3 │ │ b ┆ 1 ┆ 2 ┆ 9 │ └─────┴─────┴─────┴─────┘
Expr.filter(
*predicates: IntoExprColumn | Iterable[IntoExprColumn],
**constraints: Any,
) → Expr
© 2020 Ritchie Vink
© 2022 Polars contributors
Licensed under the MIT License.
https://docs.pola.rs/api/python/stable/reference/expressions/api/polars.Expr.filter.html