Aplicar función a cada fila en Pandas DataFrame
-
Sintaxis básica de la función
apply()
de Pandas -
Aplicar la función
lambda
a cada fila en el DataFrame de Pandas -
Aplicar una función
NumPy
a cada fila de Pandas DataFrame -
Aplicar una función definida por el usuario a cada fila de
DataFrame
de Pandas con argumentos -
Aplicar una función definida por el usuario a cada fila del
DataFrame
de Pandas sin argumentos
Pandas es una biblioteca de Python, que proporciona una gran lista de clases y funciones para realizar tareas de análisis y manipulación de datos de una manera más fácil. Manipulamos datos en el DataFrame de los pandas en forma de filas y columnas. Por lo tanto, la mayoría de las veces, necesitamos aplicar las funciones apropiadas a cada fila o columna para obtener los resultados deseados.
Este artículo explorará cómo usar pandas para aplicar funciones a cada fila en el DataFrame de Pandas. Además, demostraremos cómo aplicar varias funciones como la función lambda
, una función definida por el usuario y la función NumPy
a cada fila en un DataFrame de pandas.
Sintaxis básica de la función apply()
de Pandas
La siguiente sintaxis básica se utiliza para aplicar la función apply()
de pandas:
DataFrame.apply(function, axis, args=())
Consulte En la sintaxis anterior, la función se aplicará a cada fila. El axis
es el argumento a lo largo del cual se aplica la función en el DataFrame. Por defecto, el valor del axis
es 0
. El valor de axis=1
, si la función se aplica a todas las filas. Los args
representan la tupla o lista de argumentos pasados a la función.
Usando la función pandas apply()
, podemos aplicar fácilmente diferentes funciones a cada fila en el DataFrame. Las siguientes formas enumeradas nos ayudan a lograr este objetivo:
Aplicar la función lambda
a cada fila en el DataFrame de Pandas
Para aplicar la función lambda
a cada fila en el DataFrame, usamos la función lambda
como primer argumento en el DataFrame
, y axis=1 pasado como segundo argumento en el dataframe.apply()
utilizando el DataFrame
creado anteriormente.
Para ver cómo aplicar la función lambda
a cada fila del DataFrame
, pruebe el siguiente ejemplo:
Códigos de ejemplo:
import pandas as pd
import numpy as np
from IPython.display import display
# List of Tuples data
data = [
(1, 34, 23),
(11, 31, 11),
(22, 16, 21),
(33, 32, 22),
(44, 33, 27),
(55, 35, 11),
]
# Create a DataFrame object
dataframe = pd.DataFrame(data, columns=list("ABC"))
print("Original Dataframe before applying lambda function: ", sep="\n")
display(dataframe)
# Apply a lambda function to each row by adding 10
new_dataframe = dataframe.apply(lambda x: x + 10, axis=1)
print("Modified New Dataframe by applying lambda function on each row:")
display(new_dataframe)
Producción :
Original Dataframe before applying lambda function:
A B C
0 1 34 23
1 11 31 11
2 22 16 21
3 33 32 22
4 44 33 27
5 55 35 11
Modified Dataframe by applying lambda function on each row:
A B C
0 11 44 33
1 21 41 21
2 32 26 31
3 43 42 32
4 54 43 37
5 65 45 21
Aplicar una función NumPy
a cada fila de Pandas DataFrame
También podemos usar la función NumPy
pasada como argumento a dataframe.apply()
. En el siguiente ejemplo, aplicamos la función NumPy
a cada fila y calculamos la raíz cuadrada de cada valor.
Códigos de ejemplo:
import pandas as pd
import numpy as np
from IPython.display import display
def main():
# List of Tuples
data = [
(2, 3, 4),
(3, 5, 10),
(44, 16, 2),
(55, 32, 12),
(60, 33, 27),
(77, 35, 11),
]
# Create a DataFrame object
dataframe = pd.DataFrame(data, columns=list("ABC"))
print("Original Dataframe", sep="\n")
display(dataframe)
# Apply a numpy function to every row by taking square root of each value
new_dataframe = dataframe.apply(np.sqrt, axis=1)
print("Modified Dataframe by applying numpy function on each row:", sep="\n")
display(new_dataframe)
if __name__ == "__main__":
main()
Producción :
Original Dataframe
A B C
0 2 3 4
1 3 5 10
2 44 16 2
3 55 32 12
4 60 33 27
5 77 35 11
Modified Dataframe by applying numpy function on each row:
A B C
0 1.414214 1.732051 2.000000
1 1.732051 2.236068 3.162278
2 6.633250 4.000000 1.414214
3 7.416198 5.656854 3.464102
4 7.745967 5.744563 5.196152
5 8.774964 5.916080 3.316625
Aplicar una función definida por el usuario a cada fila de DataFrame
de Pandas con argumentos
También podemos pasar la función definida por el usuario
como un parámetro en el dataframe.apply
con algún argumento. En el siguiente ejemplo, pasamos una función definida por el usuario con el argumento args=[2]
. Cada serie de valores de fila se multiplica por 2.
Vea el siguiente ejemplo:
Código de ejemplo:
import pandas as pd
import numpy as np
from IPython.display import display
def multiplyData(x, y):
return x * y
def main():
# List of Tuples
data = [
(2, 3, 4),
(3, 5, 10),
(44, 16, 2),
(55, 32, 12),
(60, 33, 27),
(77, 35, 11),
]
# Create a DataFrame object
dataframe = pd.DataFrame(data, columns=list("ABC"))
print("Original Dataframe", sep="\n")
display(dataframe)
# Apply a user defined function with arguments to each row of Pandas dataframe
new_dataframe = dataframe.apply(multiplyData, axis=1, args=[2])
print(
"Modified Dataframe by applying user defined function on each row of pandas dataframe:",
sep="\n",
)
display(new_dataframe)
if __name__ == "__main__":
main()
Producción :
Original Dataframe
A B C
0 2 3 4
1 3 5 10
2 44 16 2
3 55 32 12
4 60 33 27
5 77 35 11
Modified Dataframe by applying user defined function on each row of pandas dataframe:
A B C
0 4 6 8
1 6 10 20
2 88 32 4
3 110 64 24
4 120 66 54
5 154 70 22
Aplicar una función definida por el usuario a cada fila del DataFrame
de Pandas sin argumentos
También podemos aplicar una función definida por el usuario a cada fila sin ningún argumento. Vea el siguiente ejemplo:
Códigos de ejemplo:
import pandas as pd
import numpy as np
from IPython.display import display
def userDefined(x):
return x * 4
def main():
# List of Tuples
data = [
(2, 3, 4),
(3, 5, 10),
(44, 16, 2),
(55, 32, 12),
(60, 33, 27),
(77, 35, 11),
]
# Create a DataFrame object
dataframe = pd.DataFrame(data, columns=list("ABC"))
print("Original Dataframe", sep="\n")
display(dataframe)
# Apply a user defined function without arguments to each row of Pandas dataframe
new_dataframe = dataframe.apply(userDefined, axis=1)
print(
"Modified Dataframe by applying user defined function on each row of pandas dataframe:",
sep="\n",
)
display(new_dataframe)
if __name__ == "__main__":
main()
Producción :
Original Dataframe
A B C
0 2 3 4
1 3 5 10
2 44 16 2
3 55 32 12
4 60 33 27
5 77 35 11
Modified Dataframe by applying user defined function on each row of pandas dataframe:
A B C
0 8 12 16
1 12 20 40
2 176 64 8
3 220 128 48
4 240 132 108
5 308 140 44
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