Выбор ответа Junior Выборка и фильтрация спрашивают часто обновлено
and вместо & в фильтре
Вопрос
Что произойдёт при df[(df.age > 18) and (df.city == "Казань")]?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Будет ValueError: истинность Series неоднозначна. Оператор and вызывает bool() у Series, а у Series из многих значений нет однозначной истинности, отсюда ValueError: The truth value of a Series is ambiguous.
Варианты ответа
- Вернутся строки, где оба условия истинны одновременно
- Будет
ValueError: истинность Series неоднозначнаправильный ответ - Вернутся строки, где истинно хотя бы одно условие
- Вернётся пустой DataFrame без ошибок
Разбор
Оператор and вызывает bool() у Series, а у Series из многих значений нет однозначной истинности, отсюда ValueError: The truth value of a Series is ambiguous. Поэлементные логические операции в pandas это &, |, ~, и каждое условие обязательно в скобках, потому что & связывает сильнее сравнения: df[(df.age > 18) & (df.city == "Казань")].
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.