Lógica condicional en Pandas DataFrame

Cómo aplicar la lógica condicional a un DataFrame de Pandas.

Ver el dataframe que se muestra a continuación,

data desired_output 0 1 False 1 2 False 2 3 True 3 4 True 

Mis datos originales se muestran en la columna ‘datos’ y la salida deseada se muestra a su lado. Si el número en ‘datos’ está por debajo de 2.5, la salida deseada es Falso.

Podría aplicar un bucle y volver a construir el dataframe … pero eso sería “untípico”

Solo compara la columna con ese valor:

 In [9]: df = pandas.DataFrame([1,2,3,4], columns=["data"]) In [10]: df Out[10]: data 0 1 1 2 2 3 3 4 In [11]: df["desired"] = df["data"] > 2.5 In [11]: df Out[12]: data desired 0 1 False 1 2 False 2 3 True 3 4 True 
 In [1]: df Out[1]: data 0 1 1 2 2 3 3 4 

Desea aplicar una función que condicionalmente devuelve un valor basado en la columna de dataframe seleccionada.

 In [2]: df['data'].apply(lambda x: 'true' if x <= 2.5 else 'false') Out[2]: 0 true 1 true 2 false 3 false Name: data 

Luego, puede asignar esa columna devuelta a una nueva columna en su dataframe:

 In [3]: df['desired_output'] = df['data'].apply(lambda x: 'true' if x <= 2.5 else 'false') In [4]: df Out[4]: data desired_output 0 1 true 1 2 true 2 3 false 3 4 false 

En este ejemplo específico, donde el DataFrame es solo una columna, puede escribir esto elegantemente como:

 df['desired_output'] = df.le(2.5) 

le prueba si los elementos son menores o iguales a 2.5, de manera similar lt por menos de, gt y ge .

 In [34]: import pandas as pd In [35]: import numpy as np In [36]: df = pd.DataFrame([1,2,3,4], columns=["data"]) In [37]: df Out[37]: data 0 1 1 2 2 3 3 4 In [38]: df["desired_output"] = np.where(df["data"] <2.5, "False", "True") In [39]: df Out[39]: data desired_output 0 1 False 1 2 False 2 3 True 3 4 True