Isso parece bastante óbvio, mas não consigo descobrir como converter um índice do quadro de dados em uma coluna?
Por exemplo:
df=
gi ptt_loc
0 384444683 593
1 384444684 594
2 384444686 596
Para,
df=
index1 gi ptt_loc
0 0 384444683 593
1 1 384444684 594
2 2 384444686 596
df.reset_index(level=df.index.names, inplace=True)
um pode converter um dado multiindex inteiro em colunasdf.reset_index()
, que se move a totalidade do índice para as colunas (uma coluna por nível) e cria um índice int de 0 a len (df) -1df['index1'] = df.index
retorna um aviso: "Um valor está tentando ser definido em uma cópia de uma fatia de um DataFrame". Use a função df.assign (), como mostrado abaixo.Para o MultiIndex, você pode extrair seu subíndice usando
onde
si_name
é o nome do subíndice.fonte
Para fornecer um pouco mais de clareza, vejamos um DataFrame com dois níveis em seu índice (um MultiIndex).
O
reset_index
método, chamado com os parâmetros padrão, converte todos os níveis de índice em colunas e usa umRangeIndex
índice simples como novo.Use o
level
parâmetro para controlar quais níveis de índice são convertidos em colunas. Se possível, use o nome do nível, que é mais explícito. Se não houver nomes de níveis, você poderá consultar cada nível por seu local inteiro, que começa em 0 a partir do exterior. Você pode usar um valor escalar aqui ou uma lista de todos os índices que deseja redefinir.No evento raro em que você deseja preservar o índice e transformá-lo em uma coluna, você pode fazer o seguinte:
fonte
rename_axis
+reset_index
Você pode primeiro renomear seu índice para um rótulo desejado e elevar para uma série:
Isso funciona também para
MultiIndex
quadros de dados:fonte
Se você deseja usar o
reset_index
método e também preservar seu índice existente, use:ou para alterá-lo no lugar:
Por exemplo:
E se você quiser se livrar do rótulo do índice, pode fazer:
fonte
fonte
Uma maneira muito simples de fazer isso é usar o método reset_index (). Para um quadro de dados df, use o código abaixo:
Dessa forma, o índice se tornará uma coluna e, usando inplace como True, isso se tornará uma mudança permanente.
fonte