He visto muchas respuestas sobre cómo eliminar filas de marcos de datos según una condición.

Sin embargo, tengo un marco de datos de Python con valores X e Y.

Quiero eliminar los valores de X en el rango de 3 a 10 y de 33 a 40 cuando y está en el rango de 3 a 37.

¿Cómo podemos hacer esto?

Así es como se ve el marco de datos:

               X          Y         Z         
0      34.587329   0.448762  0.572807
1      34.587325   0.700001  0.579152  
2      34.587327   0.950507  0.578303  
3      34.587328   1.199202  0.579037  
4      34.587328   1.445252  0.581698  
...          ...        ...       ...              
20956   0.013592  41.207004  0.585673  
20957   0.013495  40.411135  0.554721  
20958   0.013909  41.701004  0.571247  
20959   0.014094  41.962998  0.578334  
20960   0.014193  42.208740  0.555786  
0
Ray234 23 oct. 2020 a las 17:59

1 respuesta

La mejor respuesta

Use Series.between

hold_x = ~(df['X'].between(3, 10) | df['X'].between(33, 40))
hold_y = ~df['Y'].between(3, 37)


df['X'] = df['X'].where(hold_x | hold_y)

También puede usar isin + range(). la diferencia es que de esta manera puedes incluir solo el límite izquierdo:

df['X'].isin(range(3, 10))
0
ansev 23 oct. 2020 a las 15:49