Aplique una función a cada fila o columna en Dataframe usando pandas.apply()

Hay diferentes formas de aplicar una función a cada fila o columna en DataFrame. Aprenderemos sobre varias formas en esta publicación. Primero creemos un marco de datos pequeño y veamos eso. 

Python3

# import pandas and numpy library
import pandas as pd
import numpy as np
  
# list of tuples
matrix = [(1,2,3,4),
          (5,6,7,8,),
          (9,10,11,12),
          (13,14,15,16)
         ]
  
# Create a Dataframe object
df = pd.DataFrame(matrix, columns = list('abcd'))
  
# Output
df

Producción : 
 

dataframe

Método 1: Aplicar la función lambda a cada fila/columna. 
Ejemplo 1: para columna 

Python3

# import pandas and numpy library
import pandas as pd
import numpy as np
 
# list of tuples
matrix = [(1,2,3,4),
          (5,6,7,8,),
          (9,10,11,12),
          (13,14,15,16)
         ]
 
# Create a Dataframe object
df = pd.DataFrame(matrix, columns = list('abcd'))
 
# Applying a lambda function to each
# column which will add 10 to the value
new_df = df.apply(lambda x : x + 10)
 
# Output
new_df

Producción : 

dataframe-apply function-1

Ejemplo 2: Para Fila 

Python3

# import pandas and numpy library
import pandas as pd
import numpy as np
 
# list of tuples
matrix = [(1,2,3,4),
          (5,6,7,8,),
          (9,10,11,12),
          (13,14,15,16)
         ]
 
# Creating a Dataframe object
df = pd.DataFrame(matrix, columns = list('abcd'))
 
# Applying a lambda function to each
# row which will add 5 to the value
new_df = df.apply(lambda x: x + 5, axis = 1)
 
# Output
new_df

 
 Producción : 

dataframe-apply function-2

Método 2: Aplicar la función definida por el usuario a cada fila/columna 
Ejemplo 1: Para columna  

Python3

# function to returns x*x
def squareData(x):
    return x * x
 
# import pandas and numpy packages
import pandas as pd
import numpy as np
 
# list of tuples
matrix = [(1,2,3,4),
          (5,6,7,8,),
          (9,10,11,12),
          (13,14,15,16)
         ]
 
# Creating a Dataframe object
df = pd.DataFrame(matrix, columns = list('abcd'))
 
# Applying a user defined function to
# each column that will square the given
# value
new_df = df.apply(squareData)
 
# Output
new_df

 
 Producción : 

dataframe-apply function-3

Ejemplo 2: Para Fila  

Python3

# function to returns x*X
def squareData(x):
    return x * x
 
# import pandas and numpy library
import pandas as pd
import numpy as np
 
# List of tuples
matrix = [(1,2,3,4),
          (5,6,7,8,),
          (9,10,11,12),
          (13,14,15,16)
         ]
 
# Creating a Dataframe object
df = pd.DataFrame(matrix, columns = list('abcd'))
 
# Applying a user defined function
# to each row that will square the given value
new_df = df.apply(squareData, axis = 1)
 
# Output
new_df

 
 Producción : 

dataframe-apply function-4

En los ejemplos anteriores, vimos cómo se aplica una función definida por el usuario a cada fila y columna. También podemos aplicar funciones definidas por el usuario que toman dos argumentos. 

 Ejemplo 1: para columna 

Python3

# function to returns x+y
def addData(x, y):
    return x + y
 
# import pandas and numpy library
import pandas as pd
import numpy as np
 
# list of tuples
matrix = [(1,2,3,4),
          (5,6,7,8,),
          (9,10,11,12),
          (13,14,15,16)
         ]
 
# Creating a Dataframe object
df = pd.DataFrame(matrix, columns = list('abcd'))
 
# Applying a user defined function to each
# column which will add value in each
# column by given number
new_df = df.apply(addData, args = [1])
 
# Output
print(new_df)

Producción: 

dataframe-apply function

Ejemplo 2: Para Fila 

Python3

# function to returns x+y
def addData(x, y):
    return x + y
 
# import pandas and numpy library
import pandas as pd
import numpy as np
 
# List of tuples
matrix = [(1,2,3,4),
          (5,6,7,8,),
          (9,10,11,12),
          (13,14,15,16)
         ]
 
# Creating a Dataframe object
df = pd.DataFrame(matrix, columns = list('abcd'))
 
# Applying a user defined function to each
# row which will add value in each row by
# given number
new_df = df.apply(addData, axis = 1,
                    args = [3])
 
# Output
new_df

 
Producción : 

dataframe-apply function

Método 3: Aplicar la función numpy a cada fila/columna 
Ejemplo 1: Para columna 

Python3

# import pandas and numpy library
import pandas as pd
import numpy as np
 
# list of tuples
matrix = [(1,2,3,4),
          (5,6,7,8,),
          (9,10,11,12),
          (13,14,15,16)
         ]
 
# Creating a dataframe object
df = pd.DataFrame(matrix, columns = list('abcd'))
 
# Applying a numpy function to each
# column by squaring each value
new_df = df.apply(np.square)
 
# Output
new_df

 
 Producción : 

dataframe-apply function-5

Ejemplo 2: Para Fila 

Python3

# import pandas and numpy library
import pandas as pd
import numpy as np
 
# List of tuples
matrix = [(1,2,3,4),
          (5,6,7,8,),
          (9,10,11,12),
          (13,14,15,16)
         ]
 
# Creating a dataframe object
df = pd.DataFrame(matrix, columns = list('abcd'))
 
# Apply a numpy function to each row
# to find square root of each value
new_df = df.apply(np.sqrt, axis = 1)
 
# Output
new_df

 
 Producción : 

dataframe-apply function

Método 4: Aplicar una función Reductora a cada fila/columna 
Una función Reductora tomará la fila o la columna como una serie y devolverá una serie del mismo tamaño que la fila/columna de entrada o devolverá una sola variable dependiendo de la función que usemos .

Ejemplo 1: para columna 

Python3

# import pandas and numpy library
import pandas as pd
import numpy as np
 
# List of tuples
matrix = [(1,2,3,4),
          (5,6,7,8,),
          (9,10,11,12),
          (13,14,15,16)
         ]
 
# Creating a Dataframe object
df = pd.DataFrame(matrix, columns = list('abcd'))
 
# Applying a numpy function to get the sum
# of all values in each column
new_df = df.apply(np.sum)
 
# Output
new_df

 
 Producción : 

dataframe-apply function-7

Ejemplo 2: Para Fila 
 

Python3

# import pandas and numpy library
import pandas as pd
import numpy as np
 
# List of tuples
matrix = [(1,2,3,4),
          (5,6,7,8,),
          (9,10,11,12),
          (13,14,15,16)
         ]
 
# Creating a Dataframe object
df = pd.DataFrame(matrix, columns = list('abcd'))
 
# Applying a numpy function to get t
# he sum of all values in each row
new_df = df.apply(np.sum, axis = 1)
 
# Output
new_df

 
 Producción : 

dataframe-apply function-8

Publicación traducida automáticamente

Artículo escrito por ankthon y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *