Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг Управление проектами

Ищешь ответ на вопрос? — Спроси у ИИ

07 Июл 2023
2 мин
2912

Разбираемся с ошибкой «Truth value of a Series is ambiguous»

Подробнее об этом расскажет наш спикер на видео

В работе с библиотекой pandas в Python часто возникает ситуация, когда нужно отфильтровать DataFrame по определенному условию. Например, могут понадобиться

Освойте Python на курсе от Skypro. Вас ждут 400 часов обучения и практики (достаточно десяти часов в неделю), подготовка проектов для портфолио, индивидуальная проверка домашних заданий и помощь опытных наставников. Получится, даже если у вас нет опыта в IT.

В работе с библиотекой pandas в Python часто возникает ситуация, когда нужно отфильтровать DataFrame по определенному условию. Например, могут понадобиться все строки, где значение в определенной колонке выходит за пределы заданного диапазона. Интуитивно кажется, что для реализации такого условия достаточно использовать логическую операцию «или» (or), как это делается в Python.

df = df[(df['col'] < -0.25) or (df['col'] > 0.25)]

Однако, при попытке выполнить такой код, Python выдает ошибку: «Truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all()». Что она означает и как с ней справиться?

Ошибка говорит о том, что не ясно, как интерпретировать логическое значение всего объекта Series. В Python операторы and и or ожидают получить одно булево значение с каждой стороны, но в случае с pandas Series с каждой стороны есть целый набор значений. И Python не знает, что делать дальше.

Поэтому в pandas для подобных ситуаций предусмотрены специальные операторы & и |, которые выполняют поэлементные логические операции «и» и «или» соответственно. Кроме того, при использовании этих операторов необходимо каждое условие оборачивать в круглые скобки, чтобы избежать проблем с приоритетом операций.

Исправленный код будет выглядеть так:

df = df[(df['col'] < -0.25) | (df['col'] > 0.25)]

Теперь код работает корректно, и DataFrame отфильтрован по нужному условию.

На курсе Skypro «Python-разработчик» освоите основные инструменты программирования, получите опыт на реальных проектах и сможете стартовать в профессии уверенным новичком. Преподаватели — практикующие программисты с большим опытом, а в центре карьеры помогут составить цепляющее резюме и подготовиться к собеседованию.

Опрос для читателей: Какой язык программирования лучше? Узнайте результат после голосования

Добавить комментарий