Cómo aplicar una función a una columna en Pandas DataFrame
-
Los métodos
apply()
ytransform()
de Pandas -
Use
apply()
para aplicar una función a la columna Pandas DataFrame -
Use
transform()
para aplicar una función a la columna de 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)
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
- Cómo obtener las cabeceras de columna de Pandas DataFrame como una lista
- Cómo borrar la columna de Pandas DataFrame
- Cómo convertir la columna del DataFrame a Datetime en Pandas
- Cómo convertir un float en un entero en Pandas DataFrame
- Cómo clasificar Pandas DataFrame por los valores de una columna
- Cómo obtener el agregado de Pandas grupo por y suma