Eu tenho um quadro de dados com 2 níveis de índice:
value
Trial measurement
1 0 13
1 3
2 4
2 0 NaN
1 12
3 0 34
O que eu quero transformar nisso:
Trial measurement value
1 0 13
1 1 3
1 2 4
2 0 NaN
2 1 12
3 0 34
Como posso fazer isso da melhor maneira?
Preciso disso porque quero agregar os dados conforme as instruções aqui , mas não posso selecionar minhas colunas assim se estiverem em uso como índices.
.reset_index()
Respostas:
O reset_index () é um método do DataFrame do pandas que transfere valores de índice para o DataFrame como colunas. A configuração padrão para o parâmetro é drop = False (que manterá os valores do índice como colunas).
Tudo o que você precisa fazer
.reset_index(inplace=True)
após o nome do DataFrame:fonte
df.reset_index(level=[...])
Isso realmente não se aplica ao seu caso, mas pode ser útil para outras pessoas (como eu 5 minutos atrás). Se o índice múltiplo de uma pessoa tiver o mesmo nome assim:
df.reset_index(inplace=True)
falhará, pois as colunas criadas não podem ter os mesmos nomes.Então, você precisa renomear o multíndice com
df.index = df.index.set_names(['Trial', 'measurement'])
para obter:E então
df.reset_index(inplace=True)
vai funcionar como um encanto.Encontrei esse problema depois de agrupar por ano e mês em uma coluna de data e hora (não índice) chamada
live_date
, o que significava que o ano e o mês foram nomeadoslive_date
.fonte
Como @ cs95 mencionado em um comentário, para reduzir apenas um nível, use:
df.reset_index(level=[...])
Isso evita a necessidade de redefinir o índice desejado após a redefinição.
fonte