【问题标题】: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]

这里发生了什么?

【问题讨论】:

    标签: python pandas


    【解决方案1】:

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

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

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

    【讨论】:

    • 最后我读到了关于括号的粗体字!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-24
    • 2013-06-17
    • 1970-01-01
    • 2019-06-15
    • 2021-02-10
    • 1970-01-01
    • 2015-02-15
    相关资源
    最近更新 更多