En este artículo, aprenderemos diferentes formas de aplicar una función a columnas o filas individuales o seleccionadas en Dataframe. Usaremos el método Dataframe/series.apply() para aplicar una función.
Sintaxis: Dataframe/series.apply(func, convert_dtype=True, args=())
Parámetros: Este método tomará los siguientes parámetros:
func: Toma una función y la aplica a todos los valores de la serie pandas.
convert_dtype: convierte dtype según la operación de la función.
args=(): Argumentos adicionales para pasar a función en lugar de serie.Tipo de retorno: Serie Pandas después de la función/operación aplicada.
Método 1: Usar Dataframe.apply()
y lambda function
.
Ejemplo 1: para columna
# 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) ] # Create a DataFrame object df = pd.DataFrame(matrix, columns = list('xyz'), index = list('abc')) # Apply function numpy.square() to lambda # to find the squares of the values of # column whose column name is 'z' new_df = df.apply(lambda x: np.square(x) if x.name == 'z' else x) # Output new_df
Producción :
Ejemplo 2: Para Fila.
# 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) ] # Create a DataFrame object df = pd.DataFrame(matrix, columns = list('xyz'), index = list('abc')) # Apply function numpy.square() to lambda # to find the squares of the values of row # whose row index is 'b' new_df = df.apply(lambda x: np.square(x) if x.name == 'b' else x, axis = 1) # Output new_df
Producción :
Método 2: Uso del Dataframe/series.apply()
operador & [ ].
Ejemplo 1: Para Columna.
# 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) ] # Create a DataFrame object df = pd.DataFrame(matrix, columns = list('xyz'), index = list('abc')) # Apply a function to one column 'z' # and assign it back to the same column df['z'] = df['z'].apply(np.square) # Output df
Producción :
Ejemplo 2: Para Fila.
# 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) ] # Create a DataFrame object df = pd.DataFrame(matrix, columns = list('xyz'), index = list('abc')) # Apply a function to one row 'b' # and assign it back to the same row df.loc['b'] = df.loc['b'].apply(np.square) # Output df
Producción :
Método 3: Usar numpy.square()
método y [ ]
operador.
Ejemplo 1: para columna
# 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) ] # Create a DataFrame object df = pd.DataFrame(matrix, columns = list('xyz'), index = list('abc')) # Apply a function to one column 'z' and # assign it back to the same column df['z'] = np.square(df['z']) # Output print(df)
Producción :
Ejemplo 2: Para Fila.
# 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) ] # Create a DataFrame object df = pd.DataFrame(matrix, columns = list('xyz'), index = list('abc')) # Apply a function to one row 'b' and # assign it back to the same row df.loc['b'] = np.square(df.loc['b']) # Output df
Producción :
También podemos aplicar una función a más de una columna o fila en el marco de datos.
Ejemplo 1: para columna
# 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) ] # Create a DataFrame object df = pd.DataFrame(matrix, columns = list('xyz'), index = list('abc')) # Apply function numpy.square() # for square the values of # two columns 'x' and 'y' new_df = df.apply(lambda x: np.square(x) if x.name in ['x', 'y'] else x) # Output new_df
Producción :
Ejemplo 2: Para Fila.
# 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) ] # Create a DataFrame object df = pd.DataFrame(matrix, columns = list('xyz'), index = list('abc')) # Apply function numpy.square() to # square the values of two rows # 'b' and 'c' new_df = df.apply(lambda x: np.square(x) if x.name in ['b', 'c'] else x, axis = 1) # Output new_df
Producción :