polars.DataFrame.unique
-
Удалить повторяющиеся строки из этого DataFrame.
- Параметры:
-
- subset
-
Имя(имена) столбца, селектор(ы) или выражение(я), учитываемые при поиске повторяющихся строк. Если задано значение
None(по умолчанию), учитываются все столбцы. -
keep{‘first’, ‘last’, ‘any’, ‘none’} -
Какие повторяющиеся строки оставить.
-
- ‘any’: Не гарантирует, какая именно строка будет оставлена.
-
Это позволяет выполнять дополнительные оптимизации.
- ‘none’: Не оставлять повторяющиеся строки.
- ‘first’: Оставить первую уникальную строку.
- ‘last’: Оставить последнюю уникальную строку.
-
- maintain_order
-
Сохранить исходный порядок строк DataFrame. Это требует больше вычислений. Если задать значение
True, запуск на потоковом движке будет невозможен.
- Возвращает:
-
- DataFrame
-
DataFrame с уникальными строками.
Примечания
Если вы перешли с Pandas, это аналогично
pandas.DataFrame.drop_duplicates.Примеры
>>> df = pl.DataFrame( ... { ... "foo": [1, 2, 3, 1, 1], ... "bar": ["a", "a", "a", "x", "x"], ... "ham": ["b", "b", "b", "y", "y"], ... } ... )По умолчанию при определении уникальных строк учитываются все столбцы:
>>> df.unique(maintain_order=True) shape: (4, 3) ┌─────┬─────┬─────┐ │ foo ┆ bar ┆ ham │ │ --- ┆ --- ┆ --- │ │ i64 ┆ str ┆ str │ ╞═════╪═════╪═════╡ │ 1 ┆ a ┆ b │ │ 2 ┆ a ┆ b │ │ 3 ┆ a ┆ b │ │ 1 ┆ x ┆ y │ └─────┴─────┴─────┘
При определении уникальности можно учитывать только часть столбцов и задавать, какую строку оставлять при обнаружении дубликатов:
>>> df.unique(subset="foo", keep="first", maintain_order=True) shape: (3, 3) ┌─────┬─────┬─────┐ │ foo ┆ bar ┆ ham │ │ --- ┆ --- ┆ --- │ │ i64 ┆ str ┆ str │ ╞═════╪═════╪═════╡ │ 1 ┆ a ┆ b │ │ 2 ┆ a ┆ b │ │ 3 ┆ a ┆ b │ └─────┴─────┴─────┘ >>> df.unique(subset="foo", keep="last", maintain_order=True) shape: (3, 3) ┌─────┬─────┬─────┐ │ foo ┆ bar ┆ ham │ │ --- ┆ --- ┆ --- │ │ i64 ┆ str ┆ str │ ╞═════╪═════╪═════╡ │ 2 ┆ a ┆ b │ │ 3 ┆ a ┆ b │ │ 1 ┆ x ┆ y │ └─────┴─────┴─────┘ >>> df.unique(subset="foo", keep="none", maintain_order=True) shape: (2, 3) ┌─────┬─────┬─────┐ │ foo ┆ bar ┆ ham │ │ --- ┆ --- ┆ --- │ │ i64 ┆ str ┆ str │ ╞═════╪═════╪═════╡ │ 2 ┆ a ┆ b │ │ 3 ┆ a ┆ b │ └─────┴─────┴─────┘
Для определения параметра “subset” можно использовать селекторы:
>>> import polars.selectors as cs >>> df.unique(subset=cs.string(), maintain_order=True) shape: (2, 3) ┌─────┬─────┬─────┐ │ foo ┆ bar ┆ ham │ │ --- ┆ --- ┆ --- │ │ i64 ┆ str ┆ str │ ╞═════╪═════╪═════╡ │ 1 ┆ a ┆ b │ │ 1 ┆ x ┆ y │ └─────┴─────┴─────┘
В параметре “subset” также можно использовать произвольное выражение; в этом примере для определения уникальности используется часть метки перед символом “:”:
>>> df = pl.DataFrame( ... { ... "label": ["xx:1", "xx:2", "yy:3", "yy:4"], ... "value": [100, 200, 300, 400], ... } ... ) >>> df.unique( ... subset=pl.col("label").str.extract(r"^(\w+):"), ... maintain_order=True, ... keep="first", ... ) shape: (2, 2) ┌───────┬───────┐ │ label ┆ value │ │ --- ┆ --- │ │ str ┆ i64 │ ╞═══════╪═══════╡ │ xx:1 ┆ 100 │ │ yy:3 ┆ 300 │ └───────┴───────┘
DataFrame.unique(
subset: IntoExpr | Collection[IntoExpr] | None = None,
*,
keep: UniqueKeepStrategy = 'any',
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.unique.html