ValueError:检查布尔列值时,Series的真值不明确

时间:2019-04-10 07:23:52

标签: python python-3.x pandas

我的数据框包含一列具有布尔值(即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_0count_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().

2 个答案:

答案 0 :(得分:0)

当您告诉熊猫检查序列(列)是否等于某物时,它可以将其解释为很多东西。根据设计,大熊猫选择不猜测,而是抛出错误,这将导致您使用更特定的方法。

我推断您的最终结果是要计算系列中包含的0和1。为此,假设“ Project_is_approved”列由0和1组成,则只需执行以下操作:

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

这种工作方式是从左到右: 1.选择df1的“ Project_is_approved”列。 2.从那开始,应用一个布尔掩码:仅保留“ Project_is_approved”的内容等于1的元素。 3.计算此选择中有多少个元素。

您也可以通过将掩码内部的1替换为0来计数0。

答案 1 :(得分:0)

最简单的方法是对列进行汇总:

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

这既适用于正确的布尔值TrueFalse,也适用于整数值:01