我的数据框包含一列具有布尔值(即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().
答案 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
这既适用于正确的布尔值True
和False
,也适用于整数值:0
和1