具有多个条件的布尔索引[重复]

Posted

技术标签:

【中文标题】具有多个条件的布尔索引[重复]【英文标题】:Boolean Indexing with multiple conditions [duplicate] 【发布时间】:2016-04-04 12:57:09 【问题描述】:

我有一个 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]

这里发生了什么?

【问题讨论】:

【参考方案1】:

您可以转换列 'a' 或 'b',使它们都是 float64 或 bool。但是,保留特征数据类型的更简单的解决方案是:

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

一个常见的操作是使用布尔向量来过滤数据。运算符是: |为或,& 为和,~ 为非。 这些必须使用括号进行分组。

【讨论】:

最后我读到了关于括号的粗体字!

以上是关于具有多个条件的布尔索引[重复]的主要内容,如果未能解决你的问题,请参考以下文章

具有多个条件的Javascript .split()函数[重复]

Pandas:过滤具有多个字符串条件的行[重复]

如何从具有多个条件的firebase数据库中选择数据[重复]

具有多个条件的sql where子句c#Web服务[重复]

R:根据OR条件创建具有多个级别的新变量[重复]

Python条件布尔值[重复]