Python 多条件布尔索引
我有一个DF,其中我需要过滤出一些行,这些行包含特性“a”和特性“b”的值==0 为了检查这些值,我运行以下命令: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
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这些必须使用括号进行分组。最后,我阅读了有关括号的粗体文本!