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 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.
LinkedInArtí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