polars.concat
-
Объединяет несколько DataFrame, LazyFrame или Series в один объект.
- Параметры:
-
- items
-
DataFrame, LazyFrame или Series для объединения.
-
how{‘vertical’, ‘vertical_relaxed’, ‘diagonal’, ‘diagonal_relaxed’, ‘horizontal’, ‘horizontal_extend’, ‘align’, ‘align_full’, ‘align_inner’, ‘align_left’, ‘align_right’} -
Обратите внимание, что
Seriesподдерживают только стратегиюvertical.- vertical: применяет несколько операций
vstack. - vertical_relaxed: то же, что и
vertical, но дополнительно приводит столбцы к общему супертипу, если их типы не совпадают (например, Int32 → Int64). - diagonal: находит объединение схем столбцов и заполняет отсутствующие значения столбцов значением
null. - diagonal_relaxed: то же, что и
diagonal, но дополнительно приводит столбцы к общему супертипу, если их типы не совпадают (например, Int32 → Int64). - horizontal: располагает Series из DataFrame по горизонтали. Все входные фреймы должны иметь одинаковую высоту; в противном случае возникает
ShapeError. - horizontal_extend: то же, что и
horizontal, но дополняет более короткие фреймы значениемnull, если их длины не совпадают. - align, align_full, align_left, align_right: объединяет фреймы по горизонтали, автоматически определяя общие ключевые столбцы и выравнивая строки по той же логике, что и
align_frames(обратите внимание, что «align» — это псевдоним для «align_full»). Стратегия «align» определяет тип соединения, используемого для выравнивания фреймов, и эквивалентна параметру «how» вalign_frames. Обратите внимание, что общие столбцы соединения автоматически объединяются, но при совпадении имён других столбцов возникает ошибка (если требуется больший контроль, используйте напрямую соответствующий методjoin).
- vertical: применяет несколько операций
- rechunk
-
Гарантирует, что данные результата хранятся в непрерывной области памяти.
- parallel
-
Применимо только к LazyFrame. Определяет, могут ли объединённые ленивые вычисления выполняться параллельно.
- strict
-
Если how=`horizontal`, требует, чтобы все DataFrame имели одинаковую высоту; в противном случае возникает ошибка.
Устарело с версии 1.42.1: Вместо этого используйте
how='horizontal'(одинаковая высота) илиhow='horizontal_extend'(дополнение значением null).
Примеры
>>> df1 = pl.DataFrame({"a": [1], "b": [3]}) >>> df2 = pl.DataFrame({"a": [2], "b": [4]}) >>> pl.concat([df1, df2]) # default is 'vertical' strategy shape: (2, 2) ┌─────┬─────┐ │ a ┆ b │ │ --- ┆ --- │ │ i64 ┆ i64 │ ╞═════╪═════╡ │ 1 ┆ 3 │ │ 2 ┆ 4 │ └─────┴─────┘>>> df1 = pl.DataFrame({"a": [1], "b": [3]}) >>> df2 = pl.DataFrame({"a": [2.5], "b": [4]}) >>> pl.concat([df1, df2], how="vertical_relaxed") # 'a' coerced into f64 shape: (2, 2) ┌─────┬─────┐ │ a ┆ b │ │ --- ┆ --- │ │ f64 ┆ i64 │ ╞═════╪═════╡ │ 1.0 ┆ 3 │ │ 2.5 ┆ 4 │ └─────┴─────┘>>> df_h1 = pl.DataFrame({"l1": [1, 2], "l2": [3, 4]}) >>> df_h2 = pl.DataFrame({"r1": [5, 6], "r2": [7, 8], "r3": [9, 10]}) >>> pl.concat([df_h1, df_h2], how="horizontal_extend") shape: (2, 5) ┌─────┬─────┬─────┬─────┬─────┐ │ l1 ┆ l2 ┆ r1 ┆ r2 ┆ r3 │ │ --- ┆ --- ┆ --- ┆ --- ┆ --- │ │ i64 ┆ i64 ┆ i64 ┆ i64 ┆ i64 │ ╞═════╪═════╪═════╪═════╪═════╡ │ 1 ┆ 3 ┆ 5 ┆ 7 ┆ 9 │ │ 2 ┆ 4 ┆ 6 ┆ 8 ┆ 10 │ └─────┴─────┴─────┴─────┴─────┘Стратегия «diagonal» позволяет некоторым фреймам не содержать отдельные столбцы; их значения заполняются значением
null:>>> df_d1 = pl.DataFrame({"a": [1], "b": [3]}) >>> df_d2 = pl.DataFrame({"a": [2], "c": [4]}) >>> pl.concat([df_d1, df_d2], how="diagonal") shape: (2, 3) ┌─────┬──────┬──────┐ │ a ┆ b ┆ c │ │ --- ┆ --- ┆ --- │ │ i64 ┆ i64 ┆ i64 │ ╞═════╪══════╪══════╡ │ 1 ┆ 3 ┆ null │ │ 2 ┆ null ┆ 4 │ └─────┴──────┴──────┘Для стратегий «align» требуется как минимум один общий столбец, по которому выполняется выравнивание:
>>> df_a1 = pl.DataFrame({"id": [1, 2], "x": [3, 4]}) >>> df_a2 = pl.DataFrame({"id": [2, 3], "y": [5, 6]}) >>> df_a3 = pl.DataFrame({"id": [1, 3], "z": [7, 8]}) >>> pl.concat([df_a1, df_a2, df_a3], how="align") # equivalent to "align_full" shape: (3, 4) ┌─────┬──────┬──────┬──────┐ │ id ┆ x ┆ y ┆ z │ │ --- ┆ --- ┆ --- ┆ --- │ │ i64 ┆ i64 ┆ i64 ┆ i64 │ ╞═════╪══════╪══════╪══════╡ │ 1 ┆ 3 ┆ null ┆ 7 │ │ 2 ┆ 4 ┆ 5 ┆ null │ │ 3 ┆ null ┆ 6 ┆ 8 │ └─────┴──────┴──────┴──────┘ >>> pl.concat([df_a1, df_a2, df_a3], how="align_left") shape: (2, 4) ┌─────┬─────┬──────┬──────┐ │ id ┆ x ┆ y ┆ z │ │ --- ┆ --- ┆ --- ┆ --- │ │ i64 ┆ i64 ┆ i64 ┆ i64 │ ╞═════╪═════╪══════╪══════╡ │ 1 ┆ 3 ┆ null ┆ 7 │ │ 2 ┆ 4 ┆ 5 ┆ null │ └─────┴─────┴──────┴──────┘ >>> pl.concat([df_a1, df_a2, df_a3], how="align_right") shape: (2, 4) ┌─────┬──────┬──────┬─────┐ │ id ┆ x ┆ y ┆ z │ │ --- ┆ --- ┆ --- ┆ --- │ │ i64 ┆ i64 ┆ i64 ┆ i64 │ ╞═════╪══════╪══════╪═════╡ │ 1 ┆ null ┆ null ┆ 7 │ │ 3 ┆ null ┆ 6 ┆ 8 │ └─────┴──────┴──────┴─────┘ >>> pl.concat([df_a1, df_a2, df_a3], how="align_inner") shape: (0, 4) ┌─────┬─────┬─────┬─────┐ │ id ┆ x ┆ y ┆ z │ │ --- ┆ --- ┆ --- ┆ --- │ │ i64 ┆ i64 ┆ i64 ┆ i64 │ ╞═════╪═════╪═════╪═════╡ └─────┴─────┴─────┴─────┘
polars.concat(
items: Iterable[PolarsType],
*,
how: ConcatMethod = 'vertical',
rechunk: bool = False,
parallel: bool = True,
strict: bool | None = None,
) → PolarsType
© 2020 Ritchie Vink
© 2022 Polars contributors
Licensed under the MIT License.
https://docs.pola.rs/api/python/stable/reference/api/polars.concat.html