Eliminación de filas basadas en múltiples condiciones Python Pandas

Quiero eliminar filas cuando se cumplan algunas condiciones:

Por ejemplo, se genera un DataFrame aleatorio:

import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(10, 4), columns=['one', 'two', 'three', 'four']) print df 

Una instancia de la tabla se muestra a continuación:

  one two three four 0 -0.225730 -1.376075 0.187749 0.763307 1 0.031392 0.752496 -1.504769 -1.247581 2 -0.442992 -0.323782 -0.710859 -0.502574 3 -0.948055 -0.224910 -1.337001 3.328741 4 1.879985 -0.968238 1.229118 -1.044477 5 0.440025 -0.809856 -0.336522 0.787792 6 1.499040 0.195022 0.387194 0.952725 7 -0.923592 -1.394025 -0.623201 -0.738013 8 -1.775043 -1.279997 0.194206 -1.176260 9 -0.602815 1.183396 -2.712422 -0.377118 

Quiero eliminar filas basadas en las condiciones que:

Fila con el valor de col ‘one’, ‘two’ o ‘three’ mayor que 0; y el valor de col ‘four’ menor que 0 debe eliminarse.

Luego traté de implementar lo siguiente:

 df = df[df.one > 0 or df.two > 0 or df.three > 0 and df.four < 1] 

Sin embargo, lo que resulta en un mensaje de error como sigue:

 ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all() 

¿Podría alguien ayudarme sobre cómo eliminar en base a múltiples condiciones?

Por razones que no son 100% claras para mí , los pandas juegan bien con los operadores lógicos a nivel de bits | y & , pero no los booleanos or y and .

Intenta esto en su lugar:

 df = df[(df.one > 0) | (df.two > 0) | (df.three > 0) & (df.four < 1)]