Dado un marco de datos de pandas , veamos cómo cambiar el nombre de columnas específicas usando varios métodos.
Primero, creemos un marco de datos:
Python3
# import pandas package import pandas as pd # defining a dictionary d = {"Name": ["John", "Mary", "Helen"], "Marks": [95, 75, 99], "Roll No": [12, 21, 9]} # creating the pandas data frame df = pd.DataFrame(d) df
Producción:
Método 1: Usar Dataframe.rename() .
Este método es una forma de cambiar el nombre de las columnas requeridas en Pandas. Nos permite especificar los nombres de las columnas a cambiar en forma de diccionario con las claves y valores como los nombres actuales y nuevos de las respectivas columnas.
Ejemplo 1: Cambiar el nombre de una sola columna.
Python3
# import pandas package import pandas as pd # defining a dictionary d = {"Name": ["John", "Mary", "Helen"], "Marks": [95, 75, 99], "Roll No": [12, 21, 9]} # creating the pandas data frame df = pd.DataFrame(d) # displaying the columns # before renaming print(df.columns) # renaming the column "A" df.rename(columns = {"Name": "Names"}, inplace = True) # displaying the columns after renaming print(df.columns)
Producción:
Ejemplo 2: cambio de nombre de varias columnas.
Python3
# import pandas package import pandas as pd # defining a dictionary d = {"Name": ["John", "Mary", "Helen"], "Marks": [95, 75, 99], "Roll No": [12, 21, 9]} # creating the pandas dataframe df = pd.DataFrame(d) # displaying the columns before renaming print(df.columns) # renaming the columns df.rename({"Name": "Student Name", "Marks": "Marks Obtained", "Roll No": "Roll Number"}, axis = "columns", inplace = True) # displaying the columns after renaming print(df.columns)
Producción:
Ejemplo 3: pasar la función lambda para cambiar el nombre de las columnas.
Python3
# using the same modified dataframe # df from Renaming Multiple Columns # this adds ':' at the end # of each column name df = df.rename(columns = lambda x: x+':') # printing the columns print(df.columns)
Producción:
La función lambda es una pequeña función anónima que puede tomar cualquier cantidad de argumentos pero solo puede tener una expresión. Podemos usarlo si tenemos que modificar todas las columnas a la vez. Es útil si la cantidad de columnas es grande y no es una tarea fácil cambiarles el nombre usando una lista o un diccionario (¡mucho código, uf!). En el ejemplo anterior, usamos la función lambda para agregar dos puntos (‘:’) al final de cada nombre de columna.
Método 2: Usar el atributo de valores .
Podemos usar el atributo de valores en la columna que queremos renombrar y cambiarla directamente.
Python3
# using the same modified dataframe # df from Renaming Multiple Columns # Renaming the third column df.columns.values[2] = "Roll Number" # printing the columns print(df.columns)
Producción:
Método 3: usar una nueva lista de nombres de columna.
Pasamos los nombres de las columnas actualizadas como una lista para cambiar el nombre de las columnas. La longitud de la lista que proporcionamos debe ser la misma que la cantidad de columnas en el marco de datos. De lo contrario, se produce un error.
Python3
# Creating a list of new columns df_cols = ["Student Name", "Marks Obtained", "Roll Number"] # printing the columns # before renaming print(df.columns) # Renaming the columns df.columns = df_cols # printing the columns # after renaming print(df.columns)
Producción:
Método 4: Usar Dataframe.columns.str.replace() .
En general, si la cantidad de columnas en el marco de datos de Pandas es enorme, digamos casi 100, y queremos reemplazar el espacio en todos los nombres de las columnas (si existe) por un guión bajo. No es fácil proporcionar una lista o un diccionario para cambiar el nombre de todas las columnas. Por lo tanto, usamos un método como el siguiente:
Python3
# printing the column # names before renaming print(df.columns) # Replacing the space in column # names by an underscore df.columns = df.columns.str.replace(' ', '_') # printing the column names # after renaming print(df.columns)
Producción:
Además, se pueden usar otros métodos de string como str.lower para hacer que todos los nombres de las columnas estén en minúsculas.
Nota: suponga que un nombre de columna no está presente en el marco de datos original, pero está en el diccionario proporcionado para cambiar el nombre de las columnas. De forma predeterminada, el parámetro de errores de la función cambiar nombre() tiene el valor ‘ignorar’. Por lo tanto, no se muestra ningún error y las columnas existentes se renombran según las instrucciones. Por el contrario, si establecemos el parámetro de errores en ‘elevar’, se genera un error que indica que la columna en particular no existe en el marco de datos original.
A continuación se muestra un ejemplo de la misma:
Ejemplo 1: no se genera ningún error, ya que los errores predeterminados se establecen en ‘ignorar’.
Python3
# NO ERROR IS RAISED # import pandas package import pandas as pd # defining a dictionary d = {"A": [1, 2, 3], "B": [4, 5, 6]} # creating the pandas dataframe df = pd.DataFrame(d) # displaying the columns before renaming print(df.columns) # renaming the columns # column "C" is not in # the original dataframe # errors parameter is # set to 'ignore' by default df.rename(columns = {"A": "a", "B": "b", "C": "c"}, inplace = True) # displaying the columns # after renaming print(df.columns)
Producción:
Ejemplo 2: Establecer los errores de parámetro en ‘aumentar’. Se genera un error (la columna C no existe en el marco de datos original).
Python3
# ERROR IS RAISED # import pandas package import pandas as pd # defining a dictionary d = {"A": [1, 2, 3], "B": [4, 5, 6]} # creating the pandas dataframe df = pd.DataFrame(d) # displaying the columns # before renaming print(df.columns) # renaming the columns # column "C" is not in the # original dataframe setting # the errors parameter to 'raise' df.rename(columns = {"A": "a", "B": "b", "C": "c"}, inplace = True, errors = 'raise') # displaying the columns # after renaming print(df.columns)
Producción:
Publicación traducida automáticamente
Artículo escrito por eshwitha_reddy y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA