Выбор ответа Junior Выборка и фильтрация спрашивают часто обновлено

and вместо & в фильтре

Вопрос

Что произойдёт при df[(df.age > 18) and (df.city == "Казань")]?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Будет ValueError: истинность Series неоднозначна. Оператор and вызывает bool() у Series, а у Series из многих значений нет однозначной истинности, отсюда ValueError: The truth value of a Series is ambiguous.

Варианты ответа

  1. Вернутся строки, где оба условия истинны одновременно
  2. Будет ValueError: истинность Series неоднозначнаправильный ответ
  3. Вернутся строки, где истинно хотя бы одно условие
  4. Вернётся пустой DataFrame без ошибок

Разбор

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

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме