python - iloc - Lógica condicional en Pandas DataFrame
python loc example (4)
Cómo aplicar la lógica condicional a un DataFrame de Pandas.
Ver el marco de datos 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 marco de datos ... pero eso sería "untípico"
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
.
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 marco de datos 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 marco de datos:
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
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