Объединение двух фреймов данных, которые имеют общие «индексные столбцы» (столбцы идентификаторов), но не столбцы данныхPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Объединение двух фреймов данных, которые имеют общие «индексные столбцы» (столбцы идентификаторов), но не столбцы данных

Сообщение Anonymous »

Я делаю это:

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

import polars as pl
import sys

red_data = pl.DataFrame(
[
pl.Series("id", [0, 1, 2], dtype=pl.UInt8()),
pl.Series("red_data", [1, 0, 1], dtype=pl.UInt8()),
]
)
blue_data = pl.DataFrame(
[
pl.Series("id", [0, 2, 3], dtype=pl.UInt8()),
pl.Series("blue_data", [0, 1, 1], dtype=pl.UInt8()),
]
)

# in both red and blue
red_and_blue = red_data.join(blue_data, on=["id"])
# in red, but not blue
red_not_blue = red_data.join(blue_data, on=["id"], how="anti").with_columns(
blue_data=pl.lit(None, dtype=pl.UInt8())
)
# in blue, but not red
blue_not_red = blue_data.join(red_data, on=["id"], how="anti").with_columns(
red_data=pl.lit(None, dtype=pl.UInt8())
)

columns = ["id", "red_data", "blue_data"]
sys.displayhook(
pl.concat(
[
red_and_blue.select(columns),
red_not_blue.select(columns),
blue_not_red.select(columns),
]
)
)

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

shape: (4, 3)
┌─────┬──────────┬───────────┐
│ id  ┆ red_data ┆ blue_data │
│ --- ┆ ---      ┆ ---       │
│ u8  ┆ u8       ┆ u8        │
╞═════╪══════════╪═══════════╡
│ 0   ┆ 1        ┆ 0         │
│ 2   ┆ 1        ┆ 1         │
│ 1   ┆ 0        ┆ null      │
│ 3   ┆ null     ┆ 1         │
└─────┴──────────┴───────────┘
У меня два вопроса:
  • Есть ли способ сделать то, что я делаю выше, используя что-то более прямое из API Polars? Соединение How="full" с объединением, к удивлению (для меня), не дает желаемого результата.
  • Как называется то, что я пытаюсь сделать? (например, если бы я хотел посмотреть это в документации Polars или понять концепцию в более общем плане (а также написать лучший заголовок для этого поста))?


Подробнее здесь: https://stackoverflow.com/questions/792 ... t-data-col
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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