Pandas DataFrame DataFrame.apply() Función
-
La sintaxis de
pandas.DataFrame.apply()
: -
Códigos de ejemplo:
DataFrame.apply()
Método -
Códigos de ejemplo: Aplicar la función a cada columna con
DataFrame.apply()
-
Códigos de ejemplo: Aplicar la función a cada fila con
DataFrame.apply()
Método -
Códigos de ejemplo:
DataFrame.apply()
Método con parámetroresult_type
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 is a backend software engineer at Matrice.ai.
LinkedIn