Выбор ответа Middle merge, join и concat спрашивают часто обновлено
Анти-джойн в pandas
Вопрос
Как найти заказы, у которых user_id нет в таблице users?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: orders[orders["userid"].isin(users["userid"])]. Отрицание isin оставляет строки, ключа которых нет справа: это анти-джойн.
Варианты ответа
orders.merge(users, on="user_id", how="inner")orders[orders["user_id"].isin(users["user_id"])]orders.merge(users, how="cross")orders[~orders["user_id"].isin(users["user_id"])]правильный ответ
Разбор
Отрицание isin оставляет строки, ключа которых нет справа: это анти-джойн. Без тильды получим, наоборот, заказы с клиентом, как и при inner. cross строит все пары строк и к задаче не относится. Альтернатива: merge(how="left", indicator=True) и фильтр _merge == "left_only".
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.