ValueError: истинное значение серии неоднозначно при проверке значения логического столбца

Мой фрейм данных содержит один столбец с логическими значениями, т.е. 0 или 1. Я пытаюсь проверить, равен ли он 0, а затем увеличить счетчик для count_0, иначе увеличить для count_1.

if (df1['Project_is_approved']==0):
    count_0 = count_0 + 1;
if (df1['Project_is_approved']==1):
    count_1 = count_1 + 1;

Либо count_0, либо count_1 должны увеличиваться. Вместо этого я получаю сообщение об ошибке,

if (df1['Project_is_approved']==0):

Ошибка:

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
43
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Когда вы говорите pandas проверить, равен ли ряд (столбец) чему-либо, есть ряд вещей, которые он может интерпретировать. По своему замыслу pandas предпочитает не угадывать, а вместо этого выдает ошибку, которая должна привести вас к использованию более конкретных методов.

Я предполагаю, что ваш эндшпиль состоит в том, чтобы подсчитать, сколько нулей и сколько единиц содержится в ряду. Для этого, предполагая, что столбцы «Project_is_approved» состоят из 0 и 1, вы можете просто сделать следующее:

df1["Project_is_approved"][df1["Project_is_approved"] == 1].count()

Как это работает, слева направо: 1. Выберите столбец «Проект_одобрен» в df1. 2. Исходя из этого, примените логическую маску: сохраните только те элементы, для которых содержимое «Project_is_approved» равно 1. 3. Подсчитайте, сколько элементов в этом выборе.

Вы можете сделать то же самое для подсчета нулей, просто заменив 1 на 0 внутри маски.

Самый простой способ сделать это — подвести итог столбцу:

count_1 = sum(df1['Project_is_approved'])
count_0 = len(df1['Project_is_approved']) - count_1

Это работает как для правильных логических значений True и False, так и для целых значений: 0 и 1

Другие вопросы по теме