Pandas insertando valores en una nueva columna usando pandas apply/map/applymap.
El siguiente es el dataframe:
a b
0 1 3
1 2 4
2 3 5
3 4 6
4 5 7
5 6 8
6 7 9
Quiero agregar una nueva columna, llámala sum
que tome la suma de los valores de su respectiva fila.
Resultado esperado:
a b sum
0 1 3 4
1 2 4 6
2 3 5 8
3 4 6 10
4 5 7 12
5 6 8 14
6 7 9 16
¿Cómo lograr esto utilizando las funciones map
, apply
y applymap
de pandas?
Mi código:
df = pd.DataFrame({
‘a’: [1,2,3,4,5,6,7],
‘b’: [3,4,5,6,7,8,9]
})
def suma(df):
return df[‘a’]+df[‘b’]
Métodos que intenté
df[‘sum’] = df.apply(suma(df))
df[‘sum’]=df[[‘a’,’b’]].map(suma)
df[‘sum’] = df.apply(lambda x: x[‘a’] + x[‘b’])
Nota: Este es solo un código de ejemplo. El código original tiene una función que devuelve una salida diferente para cada fila individual y no es tan simple como aplicar la función de suma. Por lo tanto, solicito que hagas una función personalizada suma
e implementes estos métodos para que pueda aprender y aplicar lo mismo a mi código.
davy.ai
Aquí hay una posible implementación de la función personalizada y los diferentes métodos para agregar una columna “suma” al DataFrame dado:
La salida debería ser:
Tenga en cuenta que en los tres métodos, creamos una nueva columna llamada “sum” y le asignamos el resultado de aplicar la función “row_sum” (o la función lambda equivalente) a cada fila del DataFrame. El método “apply” se utiliza para aplicar la función a lo largo de las filas (es decir, axis=1), mientras que el método “applymap” se utiliza para aplicar la función elemento por elemento a las dos columnas del DataFrame.