HOWTO · Pandas

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

Este artículo explica distintas formas de renombrar las columnas de un DataFrame de pandas.

En esta página

Pandas ofrece tres formas útiles de renombrar las columnas de un DataFrame: asignar una lista completa mediante DataFrame.columns, cambiar solo las etiquetas que quieras con DataFrame.rename() o sustituir el conjunto completo con DataFrame.set_axis(). Elige según quieras cambiar todas las etiquetas o solo algunas.

Elige un método para renombrar columnas

Usa DataFrame.rename() para cambiar un grupo pequeño de nombres conocidos. Conserva las etiquetas que no incluyas en el mapeo, así que resulta práctico cuando solo necesitas cambiar algunas columnas. Usa DataFrame.columns o DataFrame.set_axis() cuando tengas una etiqueta nueva para cada columna. Ambos métodos de reemplazo completo requieren que la nueva lista tenga tantas etiquetas como columnas haya en el DataFrame.

Renombra todas las columnas con DataFrame.columns

Asigna una lista directamente al atributo columns para reemplazar todas las etiquetas a la vez. El ejemplo parte de ['Name', 'Age', 'Marks'] y asigna una etiqueta nueva a cada columna. La lista inicial permite seleccionar las etiquetas originales (['Name', 'Age', 'Marks']); la salida impresa de abajo muestra solo las etiquetas renombradas (['Name', 'Age', 'Roll_no']).

Ejecuta este ejemplo:

El código y las etiquetas o salidas visibles de esta sección se mantienen en inglés.

import pandas as pd

scores = pd.DataFrame(
    [["John", 20, 45], ["Peter", 21, 62], ["Scot", 25, 68]],
    columns=["Name", "Age", "Marks"],
)
scores.columns = ["Name", "Age", "Roll_no"]
print(list(scores.columns))
['Name', 'Age', 'Roll_no']

Este método es directo, pero debes indicar todas las etiquetas, incluso las que no cambian. Esto puede resultar engorroso en un DataFrame con muchas columnas. Además, la lista de reemplazo debe incluir un nombre por cada columna existente; de lo contrario, pandas no podrá asignar las etiquetas.

Renombra las columnas seleccionadas con DataFrame.rename()

Pasa un diccionario a columns: cada clave debe ser una etiqueta existente y su valor, la etiqueta de reemplazo. El ejemplo cambia solo Marks y deja intactas las demás etiquetas. De forma predeterminada, DataFrame.rename() devuelve un DataFrame nuevo y no modifica el original, así que guarda el resultado:

Ejecuta este ejemplo:

El código y las etiquetas o salidas visibles de esta sección se mantienen en inglés.

import pandas as pd

scores = pd.DataFrame([["John", 20, 45]], columns=["Name", "Age", "Marks"])
renamed = scores.rename(columns={"Marks": "Score"})
print(list(renamed.columns))
['Name', 'Age', 'Score']

También puedes usar inplace=True para aplicar el mapeo al DataFrame existente. En ese caso, la llamada devuelve None, así que no asignes su valor de retorno de nuevo al DataFrame. El mapeo suele ser la opción más clara cuando solo necesitas renombrar algunas columnas y evita tener que mantener una lista con todas las etiquetas.

Sustituye las etiquetas de las columnas con DataFrame.set_axis()

DataFrame.set_axis() ofrece otra forma de reemplazar el conjunto completo de etiquetas de columna. Pasa la lista completa y selecciona el eje de las columnas. Con el comportamiento predeterminado, asigna el DataFrame devuelto:

Ejecuta este ejemplo:

El código y las etiquetas o salidas visibles de esta sección se mantienen en inglés.

import pandas as pd

scores = pd.DataFrame([["John", 20, 45]], columns=["Name", "Age", "Marks"])
renamed = scores.set_axis(["Name", "Age", "Score"], axis="columns")
print(list(renamed.columns))
['Name', 'Age', 'Score']

Al igual que con la asignación directa, la lista debe incluir todas las columnas. Este método resulta útil si ya tienes la lista nueva en una variable independiente o si quieres integrar el reemplazo en una cadena de métodos. No permite el mapeo selectivo de nombres anteriores a nuevos que ofrece DataFrame.rename().

Comprueba el resultado y elige el método adecuado

Después del cambio, revisa renamed.columns o muestra list(renamed.columns) para confirmar que las etiquetas sean las que necesitas. Esta comprobación también resulta útil antes de que el código posterior haga referencia a una columna por su nombre: una etiqueta mal escrita o desactualizada no coincidirá con la columna renombrada.

En resumen, usa DataFrame.rename() para cambiar algunas etiquetas. Elige DataFrame.columns para reemplazarlas todas de forma directa, y DataFrame.set_axis() cuando la lista completa encaje bien en una llamada o cadena de métodos. Con cualquiera de los métodos de reemplazo completo, cuenta las etiquetas y mantén su orden alineado con el de las columnas del DataFrame.