我有一个 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]
这里发生了什么?
答案 0 :(得分:99)
您可以转换任何一列' a'或者' b'所以他们都是float64或bool。但是,保留功能数据类型的更简单的解决方案是:
DF3 = DF[(DF['a'] == 0) | (DF['b'] == 0)]
常见的操作是使用布尔向量来过滤数据。运营商是:| for or,&为和,和〜为没有。 必须使用括号对这些进行分组。