Как объединить два кадра данных Polars на основе условия?Python

Программы на Python
Anonymous
 Как объединить два кадра данных Polars на основе условия?

Сообщение Anonymous »

Учитывая следующие 3 кадра данных Polars

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

journeys = pl.DataFrame({'id':[1,2,3,4,5,6],'order_id':[11,12,13,14,14,15],'order_type':['restaurant','restaurant','restaurant','restaurant','grocery','grocery']})

restaurant_orders = pl.DataFrame({'id':[11,12,13,14],'item_count':[4,7,3,5]})

grocery_orders = pl.DataFrame({'id':[14,15],'item_count':[23,21]})

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

journeys:
┌─────┬──────────┬────────────┐
│ id  ┆ order_id ┆ order_type │
│ --- ┆ ---      ┆ ---        │
│ i64 ┆ i64      ┆ str        │
╞═════╪══════════╪════════════╡
│ 1   ┆ 11       ┆ restaurant │
│ 2   ┆ 12       ┆ restaurant │
│ 3   ┆ 13       ┆ restaurant │
│ 4   ┆ 14       ┆ restaurant │
│ 5   ┆ 14       ┆ grocery    │
│ 6   ┆ 15       ┆ grocery    │
└─────┴──────────┴────────────┘

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

restaurant_orders:
┌─────┬────────────┐
│ id  ┆ item_count │
│ --- ┆ ---        │
│ i64 ┆ i64        │
╞═════╪════════════╡
│ 11  ┆ 4          │
│ 12  ┆ 7          │
│ 13  ┆ 3          │
│ 14  ┆ 5          │
└─────┴────────────┘

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

grocery_orders:
┌─────┬────────────┐
│ id  ┆ item_count │
│ --- ┆ ---        │
│ i64 ┆ i64        │
╞═════╪════════════╡
│ 14  ┆ 23         │
│ 15  ┆ 21         │
└─────┴────────────┘
Я хочу перенести item_count в фрейм данных «Путешествия».
Наивный способ — отфильтровать фрейм данных «Путешествия» на основе столбца order_type, выполнить объединение каждого отфильтрованного фрейма данных и, наконец, соединить их обратно вместе.
Есть ли идиоматический способ Polars для выполнения условного (полиморфного?) соединения с кадром данных путешествия на основе значения order_type.

Подробнее здесь: https://stackoverflow.com/questions/773 ... -condition

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