Estoy tratando de filtrar algunos valores de mi marco de datos, pero algunos casos en la salida no parecen seguir las reglas del filtro. ¿Podría haber un problema con la lógica? Quiero obtener entradas en las que cualquiera de las columnas cumpla la condición (es por eso que uso | en lugar de &).

Ya lo intenté convirtiendo las columnas en enteros.

    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

Por ejemplo, la entrada # 3 no cumple ninguna de las condiciones, pero aún es parte de la salida.

0
JoseGzz 28 jun. 2019 a las 20:13

1 respuesta

La mejor respuesta

Tienes un error tipográfico en tu filtro, creo. Probar con:

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

Tenga en cuenta que tenía (datos['EdadCurp']) >= 21 & ... en lugar de (datos['EdadCurp'] >= 21) & .... Lo mismo con edadrfc.

2
Peque 28 jun. 2019 a las 17:33