Aplicar función a cada fila en Pandas DataFrame

Samreena Aslam 30 enero 2023
  1. Sintaxis básica de la función apply() de Pandas
  2. Aplicar la función lambda a cada fila en el DataFrame de Pandas
  3. Aplicar una función NumPy a cada fila de Pandas DataFrame
  4. Aplicar una función definida por el usuario a cada fila de DataFrame de Pandas con argumentos
  5. Aplicar una función definida por el usuario a cada fila del DataFrame de Pandas sin argumentos
Aplicar función a cada fila en Pandas DataFrame

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

los pandas aplican la función a cada fila - lambda

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

los pandas aplican la función a cada fila - numpy

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

los pandas aplican la función a cada fila - definida por el usuario

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

los pandas aplican la función a cada fila - definida por el usuario

Artículo relacionado - Pandas DataFrame