Seleccionando múltiples filas (vecinas) condicionalmente

Me gustaría devolver las filas que califican para una determinada condición. Puedo hacer esto por una sola fila, pero necesito esto para varias filas combinadas. Por ejemplo, ‘verde claro’ califica para que ‘XYZ’ sea positivo y ‘total’> 10, donde ‘Rojo’ no lo hace. Cuando combino una fila o filas vecinas, lo hace => ‘verde oscuro’. ¿Puedo lograr esto pasando todas las filas y no devolver filas duplicadas?

N = 1000 np.random.seed(0) df = pd.DataFrame( {'X':np.random.uniform(-3,10,N), 'Y':np.random.uniform(-3,10,N), 'Z':np.random.uniform(-3,10,N), }) df['total'] = df.X + df.Y + df.Z df.head(10) 

introduzca la descripción de la imagen aquí

EDITAR;

La salida deseada es ‘XYZ’> 0 y ‘total’> 10

Aquí hay un bash. Es posible que desee utilizar rolling o expanding (por velocidad y elegancia) en lugar de realizar un bucle explícito con range , pero lo hice de esa manera para poder imprimir las filas que se utilizan para calcular cada booleano.

 df = df[['X','Y','Z']] # remove the "total" column in order # to make the syntax a little cleaner df = df.head(4) # keep the example more manageable for i in range(len(df)): for k in range( i+1, len(df)+1 ): df_sum = df[i:k].sum() print( "rows", i, "to", k, (df_sum>0).all() & (df_sum.sum()>10) ) rows 0 to 1 True rows 0 to 2 True rows 0 to 3 True rows 0 to 4 True rows 1 to 2 False rows 1 to 3 True rows 1 to 4 True rows 2 to 3 True rows 2 to 4 True rows 3 to 4 True 

No estoy muy seguro de haber entendido su pregunta correctamente, pero si desea poner varias condiciones dentro de un dataframe, puede considerar este enfoque:

new_df = df[(df["X"] > 0) & (df["Y"] < 0)]

La condición & es para AND, mientras que la reemplaza con | es para la condición OR Recuerde poner las diferentes condiciones en () .

Por último, si desea eliminar duplicados, puede utilizar este

new_df.drop_duplicates()

Puede encontrar más información sobre esta función aquí: http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.drop_duplicates.html

Espero que mi respuesta te sea de utilidad.