Выбор ответа Middle merge, join и concat обновлено
Фильтр после left merge
Вопрос
После m = orders.merge(users, on="user_id", how="left") написали m[m["city"] != "Москва"]. Что случится с заказами без клиента (city = NaN)?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Они останутся, потому что NaN != "Москва" истинно. Сравнение != с NaN в pandas даёт True, поэтому строки без клиента останутся.
Варианты ответа
- Они пропадут, потому что NaN не равен вообще ничему
- Они останутся, потому что
NaN != "Москва"истинноправильный ответ - pandas выбросит
TypeErrorсравнения строки с NaN - Они получат city = "Москва" после заполнения
Разбор
Сравнение != с NaN в pandas даёт True, поэтому строки без клиента останутся. Ловушка с потерей строк бывает при == или isin, которые для NaN дают False: тогда left фактически превращается в inner. Ошибки нет, и подстановки значения тоже нет. Если NaN нужно обработать явно, используйте isna().
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.