Suma condicional de columnas de un dataframe en Python
Interesado en saber si es posible reproducir la siguiente lógica en Python, en una línea, sin crear una función.
Usando este df:
df = pd.DataFrame({'x': [10, 22, 31, 43, 57, 99, 65, 74, 88],
'y':[10, 50, 31, 66, 57, 199, 75, 80, 100]})
que se ve así:
x y
0 10 10
1 22 50
2 31 31
3 43 66
4 57 57
5 99 199
6 65 75
7 74 80
8 88 100
Para producir la siguiente salida:
x y z
0 10 10 10
1 22 50 28
2 31 31 31
3 43 66 23
4 57 57 57
5 99 199 100
6 65 75 10
7 74 80 6
8 88 100 12
He intentado lo siguiente, pero esto retorna un error de sintaxis:
z = if(y - x) == 0: a else: (y - x)
Aprecio que hay preguntas similares, pero no he encontrado nada que sea aplicable a mi caso de uso o que tenga una explicación suficiente para que pueda reutilizar el código.
davy.ai
Sí, es posible reproducir la lógica en Python en una línea, sin crear una función, usando el siguiente código:
Esto utiliza la función
np.where
de la biblioteca numpy, que recibe tres argumentos:En este caso, la condición es
(df['y'] - df['x']) == 0
, que evalúaVerdadero
cuando la diferencia entrey
yx
es cero. Si esta condición es verdadera, se asigna el valor dea
al arreglo de salida. Si la condición es falsa, se asigna la diferencia entrey
yx
al arreglo de salida. El resultado se almacena en la columnaz
del dataframe.