我的数据框中已经有两个布尔列,low
和high
。然后,我想要定义一个in_range
列,它反映了一行中low
和high
列都为false的情况。这是我试过的:
df['in_range'] = not (df.low or df.high)
这会产生错误:
ValueError:系列的真值是不明确的。使用a.empty,a.bool(),a.item(),a.any()或a.all()。
我想逐行进行此操作。我尝试添加.bool()
会导致此错误:
ValueError:只能将大小为1的数组转换为Python标量
我的代码有什么问题,以及根据现有布尔列生成新布尔列的正确方法是什么?
答案 0 :(得分:0)
使用按位语法:
~(df.low | df.high)
请参阅documentation:
另一个常见的操作是使用布尔向量来过滤 数据。运营商是:| for or,&为和,和〜为没有。这些 必须使用括号进行分组。
使用布尔向量索引一个系列的工作原理与numpy ndarray完全相同: