Eu tenho um arquivo csv sem cabeçalho, com um índice DateTime. Quero renomear o nome do índice e da coluna, mas com df.rename () apenas o nome da coluna é renomeado. Erro? Estou na versão 0.12.0
In [2]: df = pd.read_csv(r'D:\Data\DataTimeSeries_csv//seriesSM.csv', header=None, parse_dates=[[0]], index_col=[0] )
In [3]: df.head()
Out[3]:
1
0
2002-06-18 0.112000
2002-06-22 0.190333
2002-06-26 0.134000
2002-06-30 0.093000
2002-07-04 0.098667
In [4]: df.rename(index={0:'Date'}, columns={1:'SM'}, inplace=True)
In [5]: df.head()
Out[5]:
SM
0
2002-06-18 0.112000
2002-06-22 0.190333
2002-06-26 0.134000
2002-06-30 0.093000
2002-07-04 0.098667
rename_axis
método.df.rename_axis("Date", axis='index', inplace=True)
conforme a documentação pandas.pydata.org/pandas-docs/stable/generated/… oudf.index.names = ['Date']
Respostas:
o
rename
método utiliza um dicionário para o índice que se aplica aos valores do índice .Você deseja renomear para o nome do nível de índice:
Uma boa maneira de pensar sobre isso é que colunas e índice são do mesmo tipo de objeto (
Index
ouMultiIndex
) e você pode trocar os dois via transposição.Isso é um pouco confuso, pois os nomes dos índices têm um significado semelhante às colunas, então, aqui estão mais alguns exemplos:
Você pode ver a renomeação no índice, o que pode alterar a valor 1:
Enquanto renomeia os nomes dos níveis:
Nota: este atributo é apenas uma lista e você pode renomear como um entendimento / mapa da lista.
fonte
"inplace =True"
, sem ,df1.rename
realmente não mudaria nada.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 DataFrame
rename_axis
disponível para alterar os nomes do nível do índice.Vamos dar uma olhada em um DataFrame
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'.
O
rename_axis
método também tem a capacidade de alterar os nomes do nível da coluna alterando oaxis
parâmetro: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:
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.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
Podemos usar da
rename_axis
mesma forma como fizemos com DataFramesObserve 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á-loOs DataFrames não possuem esse atributo e o infact gerará uma exceção se usado assim
Antes do pandas 0.21, você poderia
rename_axis
renomear os valores no índice e nas colunas. Foi preterido, portanto, não faça issofonte
df1 = df.set_index(['state', 'color'], append=True)
comdf1.rename_axis(['names', None, 'Colors'])
?Para
pandas
versões mais recentesou
O último é necessário se um quadro de dados reter todas as suas propriedades.
fonte
No Pandas versão 0.13 e superior, os nomes de nível de índice são imutáveis (tipo
FrozenList
) e não podem mais ser definidos diretamente. Você deve primeiro usarIndex.rename()
para aplicar os novos nomes de nível de índice ao Índice e depoisDataFrame.reindex()
aplicar para aplicar o novo índice ao DataFrame. Exemplos:Para a versão Pandas <0,13
Para a versão Pandas> = 0.13
fonte
index
oucolumn
diretamente está mudando os dois para mim (no Pandas 0.19), mas não com esse método.Você também pode usar da
Index.set_names
seguinte maneira:fonte
multiIndex
?MultiIndex(levels=[['A', 'B', 'C', 'D', 'E', 'F'], ['Y', 'Z']], labels=[[0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5], [0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1]], names=['Portfolio', None])
É possível renomear oNone
parameasures
?Se você deseja usar o mesmo mapeamento para renomear colunas e índice, você pode:
fonte
É o único que faz o trabalho para mim (pandas 0.22.0).
Sem o inplace = True, o nome do índice não está definido no meu caso.
fonte
você pode usar
index
ecolumns
atributos depandas.DataFrame
. NOTA: o número de elementos da lista deve corresponder ao número de linhas / colunas.fonte