python - 具有多个条件的 bool 索引

标签 python pandas

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

相关文章:

python - 从管道 Python 读取

python - 无法在 Flask 模板中显示来自 STATIC_FOLDER 的图像

python - 使用 pd.read_csv 打开 CSV 文件 - 上下文管理器的任何目的?

python - 有效计算 Pandas 的滚动时间差

python - 比较两个数据帧列是否匹配字符串或子字符串,然后在 pandas 中计数

python - 如何将循环转换为多处理?

python - 多处理池管理器命名空间 EOF 错误

python - 根据共同值(value)合并 2 个字典列表

python - 如何在python中获取groupby函数内的计数

python - 按日期对 Pandas 数据集进行排序