Cómo usar una statement condicional basada en el valor booleano DataFrame en pandas

Ahora sé cómo verificar el dataframe para valores específicos en varias columnas. Sin embargo, no puedo encontrar la forma de llevar a cabo una sentencia if basada en una respuesta booleana.

Por ejemplo:

Camine por los directorios usando os.walk y lea un archivo específico en un dataframe.

 for root, dirs, files in os.walk(main): filters = '*specificfile.csv' for filename in fnmatch.filter(files, filters): df = pd.read_csv(os.path.join(root, filename),error_bad_lines=False) 

Ahora revisando ese dataframe en varias columnas. El primer valor es el nombre de la columna (column1), el siguiente valor es el valor específico que busco en esa columna (banana). Luego estoy revisando otra columna (columna 2) para un valor específico (verde). Si ambos son verdaderos quiero realizar una tarea específica. Sin embargo si es falso quiero hacer otra cosa.

así que algo como:

 if (df['column1']=='banana') & (df['colour']=='green'): do something else: do something 

Si desea verificar si alguna fila de DataFrame cumple con sus condiciones, puede usar .any() junto con su condición. Ejemplo –

 if ((df['column1']=='banana') & (df['colour']=='green')).any(): 

Ejemplo –

 In [16]: df Out[16]: AB 0 1 2 1 3 4 2 5 6 In [17]: ((df['A']==1) & (df['B'] == 2)).any() Out[17]: True 

Esto se debe a que su condición – ((df['column1']=='banana') & (df['colour']=='green')) – devuelve una serie de valores True / False.

Esto se debe a que en pandas, cuando compara una serie con un valor escalar, devuelve el resultado de comparar cada fila de esa serie con el valor escalar y el resultado es una serie de valores Verdadero / Falso que indica el resultado de la comparación de esa fila con El valor escalar. Ejemplo –

 In [19]: (df['A']==1) Out[19]: 0 True 1 False 2 False Name: A, dtype: bool In [20]: (df['B'] == 2) Out[20]: 0 True 1 False 2 False Name: B, dtype: bool 

Y el & hace fila and para las dos series. Ejemplo –

 In [18]: ((df['A']==1) & (df['B'] == 2)) Out[18]: 0 True 1 False 2 False dtype: bool 

Ahora, para verificar si alguno de los valores de esta serie es Verdadero, puede usar .any() , para verificar si todos los valores de la serie son Verdaderos, puede usar .all() .