Tengo un DataFrame df1:

df1 = pd.DataFrame([[31,12,32,65],[42,19,22,78],[76,13,45,68],[43,37,43,71],[43,18,34,73]],columns=['A', 'B', 'C', 'D'])

Y otro DataFrame df2:

df2 = pd.DataFrame([["B",">20"],["C",">40"],["D","<70"],["A","<40"]],columns = ["Feature","Condition"])

Quiere realizar la operación en df1 usando las condiciones respectivas presentes en df2. El resultado debe ser un DataFrame que cumpla con cualquiera de las condiciones presentes en df2 como se muestra a continuación Salida.

Output = pd.DataFrame([[31,12,32,65],[76,13,45,68],[43,37,43,71]],columns=['A', 'B', 'C', 'D']) 

¿Cómo hacerlo? Por favor ayuda.

1
Chethan 27 ago. 2020 a las 11:33

1 respuesta

La mejor respuesta

Puede utilizar agg para crear la condición, luego {{X1} }:

# create condition 
conds = " or ".join(df2.agg(" ".join, axis=1).tolist())

# apply condition
df = df1.query(conds)

print(df)

    A   B   C   D
0  31  12  32  65
2  76  13  45  68
3  43  37  43  71
3
YOLO 27 ago. 2020 a las 08:40