Pandas DataFrame DataFrame.apply() Función

Suraj Joshi 30 enero 2023
  1. La sintaxis de pandas.DataFrame.apply():
  2. Códigos de ejemplo: DataFrame.apply() Método
  3. Códigos de ejemplo: Aplicar la función a cada columna con DataFrame.apply()
  4. Códigos de ejemplo: Aplicar la función a cada fila con DataFrame.apply() Método
  5. Códigos de ejemplo: DataFrame.apply() Método con parámetro result_type
Pandas DataFrame DataFrame.apply() Función

La función pandas.DataFrame.apply() aplica la función de entrada a cada elemento a lo largo de la fila o columna del llamador Pandas DataFrame.

La sintaxis de pandas.DataFrame.apply():

DataFrame.apply(func, axis=0, raw=False, result_type=None, args=(), **kwds)

Parámetros

func La función que se aplicará a cada fila o columna
axis aplicar la función a lo largo de la fila (axis=0) o la fila (axis=1)
raw Booleana. Fila/Columna pasada como un objeto Series (raw=False) o un objeto matriz (raw=True)
result_type {'expand', 'reduce', 'broadcast', 'None'}
tipo de la salida de operación sólo aplicable para axis=1 (columnas)
Nuevo en la versión 0.23.0
args Argumentos de posición para la función func.
**kwds Argumentos de palabras clave para la función func.

Retorna

Devuelve el DataFrame después de aplicar la función de entrada a lo largo del eje especificado.

Códigos de ejemplo: DataFrame.apply() Método

import pandas as pd

df = pd.DataFrame({'X': [1, 2, 3,],
                   'Y': [4, 1, 8]})
print(df)
modified_df=df.apply(lambda x: x**2)
print(modified_df)

Resultado:

   X  Y
0  1  4
1  2  1
2  3  8
   X   Y
0  1  16
1  4   1
2  9  64

Aplicamos una función lambda - lambda x: x**2 a todos los elementos de DataFrame usando el método DataFrame.apply().

Las funciones lambda son formas más simples de definir funciones en Python.

lambda x: x**2 representa la función que toma x como entrada y devuelve x**2 como salida.

Códigos de ejemplo: Aplicar la función a cada columna con DataFrame.apply()

import pandas as pd
import numpy as np

df = pd.DataFrame({'X': [1, 2, 3,],
                   'Y': [4, 1, 8]})
print("Original DataFrame")
print(df)
modified_df=df.apply(np.sum)
print("Modified DataFrame")
print(modified_df)

Resultado:

Original DataFrame
   X  Y
0  1  4
1  2  1
2  3  8
Modified DataFrame
X     6
Y    13
dtype: int64

Aquí, np.sum se aplica a cada columna porque axis=0 (valor por defecto) en este caso.

Por lo tanto, obtenemos la suma de elementos en cada columna después de usar el método df.apply().

import pandas as pd
df = pd.DataFrame({'X': [1, 2, 3,],
                   'Y': [4, 1, 8]})
print(df)
modified_df=df.apply(lambda x: (x**2)  if x.name == 'X' else x)
print(modified_df)

Resultado:

   X  Y
0  1  4
1  2  1
2  3  8
   X  Y
0  1  4
1  4  1
2  9  8

Si queremos aplicar la función sólo a ciertas columnas, modificamos nuestra definición de la función utilizando la sentencia if para filtrar las columnas. En el ejemplo, la función modifica el valor de sólo las columnas con el nombre de columna X.

Códigos de ejemplo: Aplicar la función a cada fila con DataFrame.apply() Método

import pandas as pd
import numpy as np

df = pd.DataFrame({'X': [1, 2, 3,],
                   'Y': [4, 1, 8]})
print("Original DataFrame")
print(df)
modified_df=df.apply(np.sum, axis=1)
print("Modified DataFrame")
print(modified_df)

Resultado:

Original DataFrame
   X  Y
0  1  4
1  2  1
2  3  8
Modified DataFrame
0     5
1     3
2    11
dtype: int64

Aquí, np.sum se aplica a cada fila a la vez como hemos establecido axis=1 en este caso.

Así, obtenemos la suma de los elementos individuales de todas las filas después de usar el método df.apply().

import pandas as pd

df = pd.DataFrame({'X': [1, 2, 3,],
                   'Y': [4, 1, 8]})
print(df)
modified_df=df.apply(lambda x: (x**2)  if x.name in [0,1] else x,
                     axis=1)
print(modified_df)

Resultado:

   X  Y
0  1  4
1  2  1
2  3  8
   X   Y
0  1  16
1  4   1
2  3   8

Si queremos aplicar la función sólo a ciertas filas, modificamos nuestra definición de la función usando la sentencia if para filtrar filas. En el ejemplo, la función modifica los valores de sólo las filas con índice 0 y 1, es decir, sólo la primera y la segunda fila.

Códigos de ejemplo: DataFrame.apply() Método con parámetro result_type

Si usamos el valor por defecto del parámetro result_type, es decir, None, devolverá el DataFrame sin ninguna modificación.

import pandas as pd

df = pd.DataFrame({'X': [1, 2, 3,],
                   'Y': [4, 1, 8]})
print("Original DataFrame")
print(df)

modified_df=df.apply(lambda x:[1,1],axis=1)
print("Modified DataFrame")
print(modified_df)

Resultado:

Original DataFrame
   X  Y
0  1  4
1  2  1
2  3  8
Modified DataFrame
0    [1, 1]
1    [1, 1]
2    [1, 1]
dtype: object

En el ejemplo anterior, cada fila se pasa a la función a la vez, y el valor de la fila se establece en [1,1].

Si deseamos modificar el tipo de resultado después de que la función opere en DataFrame, podemos establecer valores para el result_type de acuerdo con nuestras necesidades.

import pandas as pd

df = pd.DataFrame({'X': [1, 2, 3,],
                   'Y': [4, 1, 8]})
print("Original DataFrame")
print(df)

modified_df=df.apply(lambda x:[1,1],
                     axis=1,
                     result_type='expand')
print("Modified DataFrame")
print(modified_df)

Resultado:

Original DataFrame
   X  Y
0  1  4
1  2  1
2  3  8
Modified DataFrame
   0  1
0  1  1
1  1  1
2  1  1

Establecer result_type='expand' expandirá todos los valores de la lista a las columnas de un DataFrame.

Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

Artículo relacionado - Pandas DataFrame