为什么我的OR Pandas过滤器逻辑不起作用?

时间:2019-06-28 17:13:05

标签: python pandas

我正在尝试从数据框中过滤某些值,但输出中的某些情况似乎未遵循过滤规则。 逻辑上可能有问题吗? 我想获得其中任一列都满足条件的条目(这就是为什么我使用|而不是&的原因。)

我已经尝试过将列转换为整数。

    datos[
       ((datos['edad'] >=21) & (datos['edad']<=68)) |
       ((datos['EdadCurp']) >= 21 & (datos['EdadCurp']<=68)) |
       ((datos['edadrfc']) >= 21 & (datos['edadrfc']<=68))
    ][["edad", "EdadCurp", "edadrfc"]].head(100)

enter image description here

例如,条目#3不满足任何条件,但仍然是输出的一部分。

1 个答案:

答案 0 :(得分:2)

我认为您的过滤器中有错字。尝试:

    datos[
       ((datos['edad'] >=21) & (datos['edad']<=68)) |
       ((datos['EdadCurp'] >= 21) & (datos['EdadCurp']<=68)) |
       ((datos['edadrfc'] >= 21) & (datos['edadrfc']<=68))
    ][["edad", "EdadCurp", "edadrfc"]].head(100)

请注意,您使用的是(datos['EdadCurp']) >= 21 & ...而不是(datos['EdadCurp'] >= 21) & ...。与edadrfc相同。