Saltar al contenido

Renombrar Pandas DataFrame Index

No olvides que en las ciencias informáticas un problema puede tener diferentes soluciones, no obstante nosotros aquí enseñaremos lo más óptimo y mejor.

Solución:

los rename método toma un diccionario para el índice que se aplica al índice valores.
Desea cambiar el nombre al nombre del nivel de índice:

df.index.names = ['Date']

Una buena manera de pensar en esto es que las columnas y el índice son el mismo tipo de objeto (Index o MultiIndex), y puede intercambiar los dos a través de la transposición.

Esto es un poco confuso ya que los nombres de los índices tienen un significado similar a las columnas, así que aquí hay algunos ejemplos más:

In [1]: df = pd.DataFrame([[1, 2, 3], [4, 5 ,6]], columns=list('ABC'))

In [2]: df
Out[2]: 
   A  B  C
0  1  2  3
1  4  5  6

In [3]: df1 = df.set_index('A')

In [4]: df1
Out[4]: 
   B  C
A      
1  2  3
4  5  6

Puede ver el cambio de nombre en el índice, que puede cambiar el valor 1:

In [5]: df1.rename(index=1: 'a')
Out[5]: 
   B  C
A      
a  2  3
4  5  6

In [6]: df1.rename(columns='B': 'BB')
Out[6]: 
   BB  C
A       
1   2  3
4   5  6

Al cambiar el nombre de los nombres de los niveles:

In [7]: df1.index.names = ['index']
        df1.columns.names = ['column']

Nota: esto attribute es solo una lista, y puede cambiar el nombre como una lista de comprensión/mapa.

In [8]: df1
Out[8]: 
column  B  C
index       
1       2  3
4       5  6

La respuesta actualmente seleccionada no menciona el rename_axis que se puede utilizar para cambiar el nombre de los niveles de índice y columna.


Pandas tiene algunas peculiaridades cuando se trata de cambiar el nombre de los niveles del índice. También hay un nuevo método DataFrame rename_axis disponible para cambiar los nombres de nivel de índice.

Echemos un vistazo a un DataFrame

df = pd.DataFrame('age':[30, 2, 12],
                       'color':['blue', 'green', 'red'],
                       'food':['Steak', 'Lamb', 'Mango'],
                       'height':[165, 70, 120],
                       'score':[4.6, 8.3, 9.0],
                       'state':['NY', 'TX', 'FL'],
                       index = ['Jane', 'Nick', 'Aaron'])

ingrese la descripción de la imagen aquí

Este DataFrame tiene un nivel para cada uno de los índices de fila y columna. Tanto el índice de fila como el de columna no tienen nombre. Cambiemos el nombre del nivel de índice de fila a ‘nombres’.

df.rename_axis('names')

ingrese la descripción de la imagen aquí

los rename_axis El método también tiene la capacidad de cambiar los nombres de nivel de columna cambiando el axis parámetro:

df.rename_axis('names').rename_axis('attributes', axis='columns')

ingrese la descripción de la imagen aquí

Si establece el índice con algunas de las columnas, el nombre de la columna se convertirá en el nuevo nombre del nivel de índice. Agreguemos niveles de índice a nuestro DataFrame original:

df1 = df.set_index(['state', 'color'], append=True)
df1

ingrese la descripción de la imagen aquí

Observe cómo el índice original no tiene nombre. Todavía podemos usar rename_axis pero necesita pasarle una lista de la misma longitud que el número de niveles de índice.

df1.rename_axis(['names', None, 'Colors'])

ingrese la descripción de la imagen aquí

Puedes usar None para eliminar efectivamente los nombres de nivel de índice.


Las series funcionan de manera similar pero con algunas diferencias.

Vamos a crear una serie con tres niveles de índice

s = df.set_index(['state', 'color'], append=True)['food']
s

       state  color
Jane   NY     blue     Steak
Nick   TX     green     Lamb
Aaron  FL     red      Mango
Name: food, dtype: object

Nosotros podemos usar rename_axis de manera similar a como lo hicimos con DataFrames

s.rename_axis(['Names','States','Colors'])

Names  States  Colors
Jane   NY      blue      Steak
Nick   TX      green      Lamb
Aaron  FL      red       Mango
Name: food, dtype: object

Tenga en cuenta que hay una pieza adicional de metadatos debajo de la Serie llamada Name. Al crear una Serie a partir de un DataFrame, este attribute se establece en el nombre de la columna.

podemos pasar un string nombre a la rename metodo para cambiarlo

s.rename('FOOOOOD')

       state  color
Jane   NY     blue     Steak
Nick   TX     green     Lamb
Aaron  FL     red      Mango
Name: FOOOOOD, dtype: object

Los marcos de datos no tienen esto attribute y de hecho generará una excepción si se usa así

df.rename('my dataframe')
TypeError: 'str' object is not callable

Antes de pandas 0.21, podrías haber usado rename_axis para cambiar el nombre de los valores en el índice y las columnas. Ha quedado en desuso, así que no hagas esto.

para los más nuevos pandas versiones

df.index = df.index.rename('new name')

o

df.index.rename('new name', inplace=True)

Este último es obligatorio si un marco de datos debe conservar todas sus propiedades.

Si entiendes que ha sido de ayuda este artículo, agradeceríamos que lo compartas con el resto entusiastas de la programación de esta manera contrubuyes a extender nuestro contenido.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *