我有一个 Pandas DF,我需要在其中过滤一些包含特征“a”和特征“b”的值 == 0 的行。
为了检查这些值,我运行以下命令:
DF1 = DF[DF['a'] == 0]
返回正确的值。同样,通过这样做:
DF2 = DF[DF['b'] == 0]
我可以看到特征“b”的 0 值。
但是,如果我尝试使用 OR 操作数将这两个组合到一行代码中:
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)]
一个常见的操作是使用 bool 向量来过滤数据。运算符是: |为或,& 为和,~ 为非。 这些必须使用括号进行分组。
关于python - 具有多个条件的 bool 索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34531416/