Мой фрейм данных содержит один столбец с логическими значениями, т.е. 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().
Когда вы говорите 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