A resposta atualmente selecionada não menciona o rename_axis método que pode ser usado para renomear os níveis de índice e coluna.
O Pandas tem algumas peculiaridades quando se trata de renomear os níveis do índice. Há também um novo método DataFramerename_axis disponível para alterar os nomes do nível do índice.
Vamos dar uma olhada em um 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 possui um nível para cada um dos índices de linha e coluna. O índice de linha e coluna não tem nome. Vamos mudar o nome do nível do índice de linha para 'names'.
df.rename_axis('names')

O rename_axismétodo também tem a capacidade de alterar os nomes do nível da coluna alterando o axisparâmetro:
df.rename_axis('names').rename_axis('attributes', axis='columns')

Se você definir o índice com algumas das colunas, o nome da coluna se tornará o novo nome no nível do índice. Vamos acrescentar os níveis de índice ao nosso DataFrame original:
df1 = df.set_index(['state', 'color'], append=True)
df1

Observe como o índice original não tem nome. Ainda podemos usar, rename_axismas precisamos passar uma lista do mesmo tamanho que o número de níveis de índice.
df1.rename_axis(['names', None, 'Colors'])

Você pode usar Nonepara excluir efetivamente os nomes no nível do índice.
As séries funcionam da mesma forma, mas com algumas diferenças
Vamos criar uma série com três níveis 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
Podemos usar da rename_axismesma forma como fizemos com 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
Observe que há um pedaço extra de metadados abaixo da série chamada Name . Ao criar uma série a partir de um DataFrame, esse atributo é definido como o nome da coluna.
Podemos passar um nome de string para o renamemétodo para alterá-lo
s.rename('FOOOOOD')
state color
Jane NY blue Steak
Nick TX green Lamb
Aaron FL red Mango
Name: FOOOOOD, dtype: object
Os DataFrames não possuem esse atributo e o infact gerará uma exceção se usado assim
df.rename('my dataframe')
TypeError: 'str' object is not callable
Antes do pandas 0.21, você poderia rename_axisrenomear os valores no índice e nas colunas. Foi preterido, portanto, não faça isso
rename_axismétodo.