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_axis
método também tem a capacidade de alterar os nomes do nível da coluna alterando o axis
parâ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_axis
mas 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 None
para 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_axis
mesma 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 rename
mé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_axis
renomear os valores no índice e nas colunas. Foi preterido, portanto, não faça isso
rename_axis
método.