¿Cómo cambiar el nombre de las columnas en Pandas?

Publicado el 06 mayo 2019 por Daniel Rodríguez @analyticslane

En los DataFrame de Pandas los nombres de las columnas permiten identificar rápidamente el contenido de estas. Por eso saber como cambiar el nombre de las columnas en Pandas puede ser importante ya que en muchas ocasiones puede que se incluyan en el archivo de datos. O simplemente sean nombres crípticos que se desea cambiar. Además de las columnas también se puede asignar un nombre a las filas de un DataFrame. A continuación, se va a explicar cómo modificar tanto los nombres de las columnas como las filas en los DataFrame de Pandas.

A modo de ejemplo en esta entrada se utilizará el conjunto de datos de exoplanetas que se puede encontrar en la librería Seaborn. Para importarlo se ha de importar la librería y utilizas la función load_dataset() como se muestra en el siguiente ejemplo

import seaborn as sb

planets = sb.load_dataset('planets')
planets.head()
            method  number  orbital_period   mass  distance  year
0  Radial Velocity       1         269.300   7.10     77.40  2006
1  Radial Velocity       1         874.774   2.21     56.95  2008
2  Radial Velocity       1         763.000   2.60     19.84  2011
3  Radial Velocity       1         326.030  19.40    110.62  2007
4  Radial Velocity       1         516.220  10.50    119.47  2009

Cambiar el nombre de todas las columnas

Los nombres de las columnas de un DataFrame se pueden obtener mediante la propiedad columns. Así, para nuestro conjunto de ejemplo se puede ver que estas son

planets.columns
Index(['method', 'number', 'orbital_period', 'mass', 'distance', 'year'], dtype='object')

Ahora, si se desea traducir los nombres de las columnas, simplemente es necesario asignar un nuevo vector con los nombres.

planets.columns = ['método', 'número', 'periodo_orbital', 'masa', 'distancia', 'año']
planets.columns
Index(['método', 'número', 'periodo_orbital', 'masa', 'distancia', 'año'], dtype='object')

Cambiar solamente ciertas columnas

El método anterior permite cambiar el nombre de todas las columnas, pero esto no es lo que se busca en muchas ocasiones. Para cambiar solamente el nombre de unas columnas los DataFrame existe el método rename(). Este método requiere que se le asigne un diccionario con el nombre original como clave y el nuevo nombre como valor. Ahora se puede cambiar los nombres por otros más largos.

planets2 = planets.rename(columns={'periodo_orbital':'periodo orbital',
                                   'método':'método descubrimiento'})

planets2.columns
Index(['método descubrimiento', 'número', 'periodo orbital', 'masa',
       'distancia', 'año'],
      dtype='object')

Al ejecutar el método se obtienen un nuevo DataFrame con los cambios, mientras que el original no se ve afectado. Para reducir el consumo de memoria se puede indicar que el cambio se realice en el objeto original asignando el valor verdadero a la propiedad inplace.

planets.rename(columns={'periodo_orbital':'periodo orbital',
                        'método':'método descubrimiento'},
               inplace=True)
planets.columns
Index(['método descubrimiento', 'número', 'periodo orbital', 'masa',
       'distancia', 'año'],
      dtype='object')

Cambiar el nombre de las filas

Por defecto el nombre de las filas es el índice de estas, pero esto no tiene porqué ser así. A las filas también se puede asignar un nombre. El método para hacer esto es también rename() solo que en este caso el diccionario con los cambios se ha de asignar a la propiedad index. Así para asignar un nombre a los dos primeros planteas se puede utilizar.

planets.rename(index={0:'Planet 1',1:'Planet 2'}, inplace=True)
planets.head()
                   method  number  orbital_period   mass  distance  year
Planet 1  Radial Velocity       1         269.300   7.10     77.40  2006
Planet 2  Radial Velocity       1         874.774   2.21     56.95  2008
2         Radial Velocity       1         763.000   2.60     19.84  2011
3         Radial Velocity       1         326.030  19.40    110.62  2007
4         Radial Velocity       1         516.220  10.50    119.47  2009

Cambiar al mismo tiempo columnas y filas

El cambio de los nombres de columnas y filas en los DataFrame se puede realizar al mismo tiempo. El método rename() puede leer un diccionario para las columnas y otro para las filas al mismo tiempo. El diccionario con los nombres de columnas se tiene que asignar a la propiedad columns, mientras que los índices a la propiedad index.

planets.rename(columns={'periodo_orbital':'periodo orbital',
                        'método':'método descubrimiento'},
               index={0:'cero',1:'uno'},
               inplace=True)

Conclusiones

En esta entrada se ha visto cómo modificar el nombre de las filas o columnas en DataFrame de Pandas. Saber cómo cambiar el nombre de las columnas en Pandas es clave para disponer de unos conjuntos de datos en los que sea fácil reconocer su contenido. Además de esto saber asignar un nombre a las filas también es de ayuda al trabajar con datos.

Imágenes: Pixabay (rawpixel)

No te olvides valorar esta entrada

Suscríbete a nuestro boletín

Suscríbete al boletín semanal para estar al día de todas las publicaciones de Analytics Lane.

Contenido relacionado