Cómo cambiar el nombre de las columnas en Pandas DataFrame

Puneet Dobhal 30 enero 2023
  1. Renombrar columnas en pandas DataFrame usando el método DataFrame.columns
  2. Renombrar columnas en pandas DataFrame usando el método DataFrame.rename()
  3. Renombrar columnas en pandas DataFrame usando el método DataFrame.set_axis()
Cómo cambiar el nombre de las columnas en Pandas DataFrame

A menudo somos necesarios para manipular nombres de columnas en el análisis de datos. En este artículo, exploraremos diferentes métodos para manipular / renombrar nombres de columnas para un DataFrame de panadas ya definido.

Renombrar columnas en pandas DataFrame usando el método DataFrame.columns

Este método es bastante sencillo y le permite cambiar el nombre de las columnas directamente. Podemos asignar una lista de nuevos nombres de columna usando el atributo DataFrame.columns de la siguiente manera:

import pandas as pd

example_df = pd.DataFrame(
    [["John", 20, 45], ["Peter", 21, 62], ["Scot", 25, 68]],
    index=[0, 1, 2],
    columns=["Name", "Age", "Marks"],
)

print "\nOriginal DataFrame"
print (pd.DataFrame(example_df))
example_df.columns = ["Name", "Age", "Roll_no"]

print "\nModified DataFrame"
print (pd.DataFrame(example_df))

Producción :

Original DataFrame
    Name  Age  Marks
0   John   20     45
1  Peter   21     62
2   Scot   25     68

Modified DataFrame
    Name  Age  Roll_no
0   John   20       45
1  Peter   21       62
2   Scot   25       68

Un inconveniente de este enfoque es que debe enumerar toda la columna, incluso si solo una de las columnas necesita ser renombrada. Especificar la lista de columnas completa se vuelve poco práctico cuando tiene una gran cantidad de columnas.

Renombrar columnas en pandas DataFrame usando el método DataFrame.rename()

El enfoque alternativo al método anterior está utilizando el método DataFrame.rename(). Este método es bastante útil cuando no necesitamos cambiar el nombre de todas las columnas.

Tendremos que especificar el nombre de la columna anterior como clave y los nuevos nombres como valores.

import pandas as pd

example_df = pd.DataFrame(
    [["John", 20, 45, 78], ["Peter", 21, 62, 68], ["Scot", 25, 68, 95]],
    index=[0, 1, 2],
    columns=["Name", "Age", "Marks", "Roll_no"],
)

print "\nOriginal DataFrame"
print (pd.DataFrame(example_df))
example_df.rename(columns={"Marks": "Roll_no", "Roll_no": "Marks"}, inplace=True)

print "\nModified DataFrame"
print (pd.DataFrame(example_df))

Producción :

Original DataFrame
    Name  Age  Marks  Roll_no
0   John   20     45       78
1  Peter   21     62       68
2   Scot   25     68       95

Modified DataFrame
    Name  Age  Roll_no  Marks
0   John   20       45     78
1  Peter   21       62     68
2   Scot   25       68     95

La ventaja más importante de este método es que puede especificar tantas columnas como desee. Es bastante efectivo cuando necesita cambiar el nombre de columnas específicas y, a diferencia de los métodos anteriores, no es necesario enumerar la lista de columnas completa para el DataFrame.

Puede notar que en la llamada a la función DataFrame.rename() hemos especificado el parámetro inplace como True. El parámetro inplace es por defecto False y especifica si se debe devolver un nuevo pandas DataFrame o no.

Si se especifica como True significa que la llamada a la función no devuelve un nuevo Pandas DataFrame, sino que cambia el DataFrame existente en su lugar.

Renombrar columnas en pandas DataFrame usando el método DataFrame.set_axis()

Otro método conveniente para renombrar columnas de pandas DataFrame. Tenemos que especificar la lista completa de columnas al usar este método.

import pandas as pd

example_df = pd.DataFrame(
    [["John", 20, 45, 78], ["Peter", 21, 62, 68], ["Scot", 25, 68, 95]],
    index=[0, 1, 2],
    columns=["Name", "Age", "Marks", "Roll_no"],
)

print "\nOriginal DataFrame"
print (pd.DataFrame(example_df))

example_df.set_axis(["Name", "Age", "Roll_no", "Marks"], axis="columns", inplace=True)

print "\nModified DataFrame"
print (pd.DataFrame(example_df))

Producción :

Original DataFrame
    Name  Age  Marks  Roll_no
0   John   20     45       78
1  Peter   21     62       68
2   Scot   25     68       95

Modified DataFrame
    Name  Age  Roll_no  Marks
0   John   20       45     78
1  Peter   21       62     68
2   Scot   25       68     95

Artículo relacionado - Pandas DataFrame