Aplicar una función a múltiples columnas en Pandas DataFrame

Manav Narula 11 marzo 2021
Aplicar una función a múltiples columnas en Pandas DataFrame

Este artículo introducirá cómo aplicar una función a múltiples columnas en Pandas DataFrame. Utilizaremos el mismo DataFrame que se muestra a continuación en todos los códigos de ejemplo.

import pandas as pd
import numpy as np

df = pd.DataFrame(
    [[5, 6, 7, 8], [1, 9, 12, 14], [4, 8, 10, 6]], columns=["a", "b", "c", "d"]
)

Resultado:

   a  b   c   d
0  5  6   7   8
1  1  9  12  14
2  4  8  10   6

Use apply() para aplicar funciones a las columnas en Pandas

El método apply() permite aplicar una función para un DataFrame completo, ya sea a través de columnas o filas. Establecemos el parámetro axis como 0 para las filas y 1 para las columnas.

En los ejemplos que se muestran a continuación, incrementaremos el valor de un DataFrame de muestra utilizando la función que definimos anteriormente:

import pandas as pd
import numpy as np

df = pd.DataFrame(
    [[5, 6, 7, 8], [1, 9, 12, 14], [4, 8, 10, 6]], columns=["a", "b", "c", "d"]
)


def x(a):
    return a + 1


df_new = df.apply(x, axis=1)

print("The original dataframe:")
print(df)
print("The new dataframe:")
print(df_new)

Resultado:

The original dataframe:
   a  b   c   d
0  5  6   7   8
1  1  9  12  14
2  4  8  10   6
The new dataframe:
   a   b   c   d
0  6   7   8   9
1  2  10  13  15
2  5   9  11   7

También podemos aplicar una función a múltiples columnas, como se muestra a continuación:

import pandas as pd
import numpy as np

df = pd.DataFrame(
    [[5, 6, 7, 8], [1, 9, 12, 14], [4, 8, 10, 6]], columns=["a", "b", "c", "d"]
)

print("The original dataframe:")
print(df)


def func(x):
    return x[0] + x[1]


df["e"] = df.apply(func, axis=1)

print("The new dataframe:")
print(df)

Resultado:

The original dataframe:
   a  b   c   d
0  5  6   7   8
1  1  9  12  14
2  4  8  10   6
The new dataframe:
   a  b   c   d   e
0  5  6   7   8  11
1  1  9  12  14  10
2  4  8  10   6  12

La nueva columna e añadida es la suma de los datos de las columnas a y b. El propio DataFrame es el argumento oculto pasado a la función. Se puede acceder a las columnas con el índice como en el ejemplo anterior, o con el nombre de la columna, como se muestra a continuación.

import pandas as pd
import numpy as np

df = pd.DataFrame(
    [[5, 6, 7, 8], [1, 9, 12, 14], [4, 8, 10, 6]], columns=["a", "b", "c", "d"]
)

print("The original dataframe:")
print(df)

df["e"] = df.apply(lambda x: x.a + x.b, axis=1)

print("The new dataframe:")
print(df)

Realiza la misma operación que el ejemplo anterior. Aquí usamos una función lambda. x.a y x.b se refieren a la columna a y b en el DataFrame.

Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

Artículo relacionado - Pandas DataFrame