Python 多条件布尔索引

Python 多条件布尔索引,python,pandas,Python,Pandas,我有一个DF,其中我需要过滤出一些行,这些行包含特性“a”和特性“b”的值==0 为了检查这些值,我运行以下命令: DF1 = DF[DF['a'] == 0] 返回正确的值。同样,通过这样做: DF2 = DF[DF['b'] == 0] 我可以看到功能“b”的0值 但是,如果我尝试使用OR操作数将这2个组合到一行代码中: DF3 = DF[DF['a'] == 0 | DF['b'] == 0] 我明白了: TypeError: cannot compare a dtyped [fl

我有一个DF,其中我需要过滤出一些行,这些行包含特性“a”和特性“b”的值==0

为了检查这些值,我运行以下命令:

DF1 = DF[DF['a'] == 0]
返回正确的值。同样,通过这样做:

DF2 = DF[DF['b'] == 0]
我可以看到功能“b”的0值

但是,如果我尝试使用OR操作数将这2个组合到一行代码中:

DF3 = DF[DF['a'] == 0 |  DF['b'] == 0]
我明白了:

TypeError: cannot compare a dtyped [float64] array with a scalar of type [bool]

这里发生了什么?

您可以变换列“a”或“b”,使它们都是float64或bool。但是,保留功能数据类型的更简单解决方案是:

DF3 = DF[(DF['a'] == 0) | (DF['b'] == 0)]

一种常见的操作是使用布尔向量来过滤数据。运算符为:| for or、&for and和~ for not这些必须使用括号进行分组。

最后,我阅读了有关括号的粗体文本!