La risposta attualmente selezionata non menziona il rename_axismetodo che può essere utilizzato per rinominare i livelli di indice e colonna.
Panda ha qualche stranezza quando si tratta di rinominare i livelli dell'indice. È inoltre disponibile un nuovo metodo DataFrame rename_axisper modificare i nomi a livello di indice.
Diamo un'occhiata 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'])

Questo DataFrame ha un livello per ciascuno degli indici di riga e colonna. Sia l'indice di riga che quello di colonna non hanno nome. Cambiamo il nome del livello dell'indice di riga in "nomi".
df.rename_axis('names')

Il rename_axismetodo ha anche la possibilità di cambiare i nomi a livello di colonna modificando il axisparametro:
df.rename_axis('names').rename_axis('attributes', axis='columns')

Se si imposta l'indice con alcune delle colonne, il nome della colonna diventerà il nuovo nome del livello di indice. Aggiungiamo i livelli di indice al nostro DataFrame originale:
df1 = df.set_index(['state', 'color'], append=True)
df1

Notare come l'indice originale non ha nome. Possiamo ancora usare rename_axisma dobbiamo passare un elenco della stessa lunghezza del numero di livelli di indice.
df1.rename_axis(['names', None, 'Colors'])

È possibile utilizzare Noneper eliminare in modo efficace i nomi a livello di indice.
Le serie funzionano in modo simile ma con alcune differenze
Creiamo una serie con tre livelli di indice
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
Possiamo usare in rename_axismodo simile a come abbiamo fatto 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
Nota che c'è un pezzo extra di metadati sotto la serie chiamata Name. Quando si crea una serie da un DataFrame, questo attributo è impostato sul nome della colonna.
Possiamo passare un nome stringa al renamemetodo per cambiarlo
s.rename('FOOOOOD')
state color
Jane NY blue Steak
Nick TX green Lamb
Aaron FL red Mango
Name: FOOOOOD, dtype: object
DataFrames non ha questo attributo e infatti genererà un'eccezione se usato in questo modo
df.rename('my dataframe')
TypeError: 'str' object is not callable
Prima dei panda 0.21, avresti potuto usare rename_axisper rinominare i valori nell'indice e nelle colonne. È stato deprecato, quindi non farlo
rename_axismetodo.