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'])
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')
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')
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
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'])
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.