polars.DataFrame.merge_sorted
-
Объединяет два отсортированных DataFrame по отсортированному ключу.
Результат этой операции также будет отсортирован. Вызывающий код отвечает за то, чтобы фреймы были отсортированы по ключу (ключам) в порядке возрастания, а null-ключи находились в начале; в противном случае порядок результата не будет иметь смысла.
Схемы обоих DataFrame должны совпадать.
- Параметры:
-
- other
-
Другой DataFrame, который необходимо объединить
- key
-
Столбец (столбцы), по которому отсортированы фреймы. Можно передать имя одного столбца или последовательность имён столбцов. Если указано несколько ключей, фреймы объединяются так, как если бы они были отсортированы по этим ключам в указанном порядке.
- maintain_order
-
Если
True, гарантируется, что при одинаковых ключах порядок будет смещён в пользу левого фрейма: строки из левого фрейма будут идти перед строками из правого фрейма.
Примечания
Если не задано
maintain_order=True, порядок строк результата при совпадении ключей в обоих фреймах данных не гарантируется.Ключи должны быть отсортированы в порядке возрастания.
Примеры
>>> df0 = pl.DataFrame( ... {"name": ["steve", "elise", "bob"], "age": [42, 44, 18]} ... ).sort("age") >>> df0 shape: (3, 2) ┌───────┬─────┐ │ name ┆ age │ │ --- ┆ --- │ │ str ┆ i64 │ ╞═══════╪═════╡ │ bob ┆ 18 │ │ steve ┆ 42 │ │ elise ┆ 44 │ └───────┴─────┘ >>> df1 = pl.DataFrame( ... {"name": ["anna", "megan", "steve", "thomas"], "age": [21, 33, 42, 20]} ... ).sort("age") >>> df1 shape: (4, 2) ┌────────┬─────┐ │ name ┆ age │ │ --- ┆ --- │ │ str ┆ i64 │ ╞════════╪═════╡ │ thomas ┆ 20 │ │ anna ┆ 21 │ │ megan ┆ 33 │ │ steve ┆ 42 │ └────────┴─────┘ >>> df0.merge_sorted(df1, key="age") shape: (7, 2) ┌────────┬─────┐ │ name ┆ age │ │ --- ┆ --- │ │ str ┆ i64 │ ╞════════╪═════╡ │ bob ┆ 18 │ │ thomas ┆ 20 │ │ anna ┆ 21 │ │ megan ┆ 33 │ │ steve ┆ 42 │ │ steve ┆ 42 │ │ elise ┆ 44 │ └────────┴─────┘Для объединения фреймов, отсортированных по составному ключу, можно передать несколько ключей. Фреймы объединяются так, как если бы они были отсортированы сначала по
key_1, а затем поkey_2.>>> df0 = pl.DataFrame({"key_1": [1, 1, 3], "key_2": [1, 4, 2]}) >>> df1 = pl.DataFrame({"key_1": [1, 2, 3], "key_2": [2, 1, 1]}) >>> df0.merge_sorted(df1, key=["key_1", "key_2"]) shape: (6, 2) ┌───────┬───────┐ │ key_1 ┆ key_2 │ │ --- ┆ --- │ │ i64 ┆ i64 │ ╞═══════╪═══════╡ │ 1 ┆ 1 │ │ 1 ┆ 2 │ │ 1 ┆ 4 │ │ 2 ┆ 1 │ │ 3 ┆ 1 │ │ 3 ┆ 2 │ └───────┴───────┘
DataFrame.merge_sorted(
other: DataFrame,
key: str | Sequence[str],
*,
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.merge_sorted.html