Cómo aplicar una función a una columna en Pandas DataFrame

Sathiya Sarathi 30 enero 2023
  1. Los métodos apply() y transform() de Pandas
  2. Use apply() para aplicar una función a la columna Pandas DataFrame
  3. Use transform() para aplicar una función a la columna de Pandas DataFrame
Cómo aplicar una función a una columna en Pandas DataFrame

En Pandas, las columnas y Dataframe pueden ser transformados y manipulados usando métodos como apply() y transform(). Las transformaciones deseadas se pasan como argumentos a los métodos como funciones. Cada método tiene sus sutiles diferencias y utilidad. Este artículo introducirá cómo aplicar una función a una columna o a un dataframe completo.

Los métodos apply() y transform() de Pandas

Ambos métodos apply() y transform() operan en columnas individuales y en todo el DataFrame. El método apply() aplica la función a lo largo de un eje especificado. Pasa las columnas como un dataframe a la función personalizada, mientras que el método transform() pasa las columnas individuales como pandas Series a la función personalizada.

La salida del método apply() se recibe en forma de un dataframe o Series dependiendo de la entrada, mientras que como una secuencia para el método transform(). Tanto la sintaxis de los métodos apply() como la de transform() se parecen a la de:

Dataframe.apply(customFunction, axis=0)
Dataframe.transform(customFunction, axis=0)

Los argumentos corresponden a

  • customFunction: la función que se aplica al DataFrame o a la serie.
  • axis: 0 se refiere a 'rows', y 1 se refiere a 'columns'; la función debe ser aplicada tanto en filas como en columnas.

Use apply() para aplicar una función a la columna Pandas DataFrame

Ahora que hemos dominado lo básico, pongamos las manos en los códigos y entendamos cómo usar el método apply() para aplicar una función a una columna de dataframe.

Usaremos el ejemplo de dataframe como se muestra a continuación.

import pandas as pd
import numpy as np

df = pd.DataFrame([[1, 2, 3], [4, 5, 6], [7, 8, 9]], columns=["A", "B", "C"])
print(df)

aplicar la función a la columna del dataframe - ejemplo

A continuación se muestra el código de ejemplo para aplicar una función a todo el DataFrame.

import pandas as pd
import numpy as np

df = pd.DataFrame([[1, 2, 3], [4, 5, 6], [7, 8, 9]], columns=["A", "B", "C"])
print(df)


def add_2(x):
    return x + 2


df = df.apply(add_2)
print(df)

Resultado:

   A  B  C
0  1  2  3
1  4  5  6
2  7  8  9
   A   B   C
0  3   4   5
1  6   7   8
2  9  10  11

Como se ha visto anteriormente, la función puede aplicarse a todo el DataFrame.

Aplicar una función a una sola columna

Veamos qué sucede cuando la función se aplica a lo largo de una sola columna.

import pandas as pd
import numpy as np

df = pd.DataFrame([[1, 2, 3], [4, 5, 6], [7, 8, 9]], columns=["A", "B", "C"])
print(df)


def add_2(x):
    return x + 2


df["A"] = df["A"].apply(add_2)
print(df)

# or #

df["A"].transform(add_2)
print(df)

Resultado:

   A  B  C
0  1  2  3
1  4  5  6
2  7  8  9
   A  B  C
0  3  2  3
1  6  5  6
2  9  8  9

Use transform() para aplicar una función a la columna de Pandas DataFrame

Veamos cómo usar el método transform() para aplicar una función a una columna de dataframe. Usaremos el mismo ejemplo de dataframe que arriba.

El código de ejemplo para aplicar una función a todo el DataFrame se muestra a continuación.

import pandas as pd
import numpy as np

df = pd.DataFrame([[1, 2, 3], [4, 5, 6], [7, 8, 9]], columns=["A", "B", "C"])
print(df)


def add_2(x):
    return x + 2


df = df.transform(add_2)
print(df)

Resultado:

   A  B  C
0  1  2  3
1  4  5  6
2  7  8  9
   A   B   C
0  3   4   5
1  6   7   8
2  9  10  11

Como se ha visto arriba, la función puede ser aplicada a todo el dataframe.

Aplicar una función a una sola columna

Veamos qué sucede cuando la función se aplica a lo largo de una sola columna.

import pandas as pd
import numpy as np

df = pd.DataFrame([[1, 2, 3], [4, 5, 6], [7, 8, 9]], columns=["A", "B", "C"])
print(df)


def add_2(x):
    return x + 2


df["A"] = df["A"].transform(add_2)
print(df)

Resultado:

   A  B  C
0  1  2  3
1  4  5  6
2  7  8  9
   A  B  C
0  3  2  3
1  6  5  6
2  9  8  9

Artículo relacionado - Pandas DataFrame