Сохраняют ли поляры порядок строк в левом соединении? ⇐ Python

Программы на Python
Anonymous
Сохраняют ли поляры порядок строк в левом соединении?

Сообщение Anonymous »

Рассмотрим следующие полярные фреймы данных:

Код: Выделить всё

>>> left = pl.DataFrame(pl.Series('a', [1,5,3,2]))
>>> left
shape: (4, 1)
┌─────┐
│ a   │
│ --- │
│ i64 │
╞═════╡
│ 1   │
│ 5   │
│ 3   │
│ 2   │
└─────┘
>>> right = pl.DataFrame([pl.Series('a', [0,1,2,3]), pl.Series('b', [4,5,6,7])])
>>> right
shape: (4, 2)
┌─────┬─────┐
│ a   ┆ b   │
│ --- ┆ --- │
│ i64 ┆ i64 │
╞═════╪═════╡
│ 0   ┆ 4   │
│ 1   ┆ 5   │
│ 2   ┆ 6   │
│ 3   ┆ 7   │
└─────┴─────┘
Я хотел бы объединить эти два значения таким образом, чтобы сохранить порядок значений a в левом кадре данных. Кажется, левое соединение делает это:

Код: Выделить всё

>>> left.join(right, on='a', how='left')
shape: (4, 2)
┌─────┬──────┐
│ a   ┆ b    │
│ --- ┆ ---  │
│ i64 ┆ i64  │
╞═════╪══════╡
│ 1   ┆ 5    │
│ 5   ┆ null │
│ 3   ┆ 7    │
│ 2   ┆ 6    │
└─────┴──────┘
Мой вопрос: гарантировано ли такое поведение? Если нет, то какой безопасный способ сделать это? Я мог бы использовать with_row_index, а затем выполнить окончательную сортировку, но это кажется довольно громоздким. В pandas это можно сделать с помощью метода reindex.


Подробнее здесь: https://stackoverflow.com/questions/757 ... -left-join

Вернуться в «Python»