布尔索引具有多个条件

时间:2015-12-30 14:27:59

标签: python pandas

我有一个 Pandas DF ,我需要过滤一些包含值== 0的行,用于功能'a'和功能'b'。

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

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]

这里发生了什么?

1 个答案:

答案 0 :(得分:99)

您可以转换任何一列' a'或者' b'所以他们都是float64或bool。但是,保留功能数据类型的更简单的解决方案是:

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

常见的操作是使用布尔向量来过滤数据。运营商是:| for or,&为和,和〜为没有。 必须使用括号对这些进行分组。