Что верно про вызов pd.merge(orders, customers, on="customer_id", how="left")?
AОстанутся только заказы с совпадающим клиентом в
customers, как при inner joinBОстанутся все строки
orders, а поля customers будут NaN при отсутствии парыCОстанутся все клиенты
customers, даже без единого заказа в таблице ordersD
pandas удалит дубликаты по customer_id в обеих таблицах перед объединениемПравильный ответ.
left join сохраняет все строки из левой таблицы и добавляет данные из правой по ключу.Разбор
При how="left" левая таблица — это orders, поэтому каждая строка заказа попадёт в результат. Для каждого заказа pandas пытается найти строку в customers с тем же customer_id. Если совпадения нет, колонки из customers заполняются NaN. Это типичный паттерн для обогащения фактов (заказов) атрибутами (клиентов). Дубликаты по ключу автоматически не удаляются — они приведут к размножению строк.
Проверь себя · 1/3разбор после ответа
В
df есть столбец age. Какие значения age попадут в результат df[(df["age"] >= 18) & (df["age"] <= 25)]?Ещё вопросы по теме «Pandas и DataFrame»
- Что вернёт выражение `df[df["price"] > 100]`?
- В `DataFrame` `df` есть столбцы `country`, `user_id`, `revenue`. Что вернёт выражение `df.loc[df["country"] == "RU", ["user_id", "revenue"]]`?
- В `df` есть столбец `age`. Какие значения `age` попадут в результат `df[(df["age"] >= 18) & (df["age"] <= 25)]`?
- Что выберет фильтр `df[~df["status"].isin(["cancelled", "returned"])]`?
- Что верно про два шага: `mask = df["col"] > 0` и затем `df[mask]`?
- Все вопросы по «Pandas и DataFrame» →