Pandas: como remover multiindex em uma tabela dinâmica


Para remover um multiIndex de uma tabela dinâmica do pandas, você pode usar o argumento de valores com a função reset_index() :

 p.d. pivot_table (df, index=' col1 ', columns=' col2 ', values=' col3 '). reset_index ()

O exemplo a seguir mostra como usar essa sintaxe na prática.

Exemplo: remover MultiIndex na tabela dinâmica do Pandas

Suponha que temos o seguinte DataFrame do pandas que contém informações sobre vários jogadores de basquete:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   ' position ': ['G', 'G', 'F', 'F', 'G', 'F', 'F', 'F'],
                   ' points ': [4, 4, 6, 8, 9, 5, 5, 12]})

#view DataFrame
print (df)

  team position points
0 AG 4
1 GA 4
2 AF 6
3AF 8
4 BG 9
5 BF 5
6 BF 5
7 BF 12

Agora, suponha que criemos a seguinte tabela dinâmica para resumir o valor médio de pontos por equipe e posição :

 #create pivot table to summarize mean points by team and position
p.d. pivot_table (df, index=' team ', columns=' position ')

	        points
FG position
team		
At 7.000000 4.0
B 7.333333 9.0

A tabela dinâmica resultante resume o valor médio de pontos por equipe e posição , mas contém um multiIndex.

Para remover o multiIndex, podemos usar o argumento de valores na função pivot_table() e adicionar reset_index() no final:

 #create pivot table to summarize mean points by team and position
p.d. pivot_table (df, index=' team ', columns=' position ', values=' points '). reset_index ()

position team F G
0 to 7.000000 4.0
1 B 7.333333 9.0

A tabela dinâmica resultante resume o valor médio de pontos por equipe e posição e não possui mais um multiIndex.

Observe que a função pivot_table() calcula o valor médio por padrão.

Para calcular outra métrica, como soma, use o argumento aggfunc da seguinte maneira:

 #create pivot table to summarize sum of points by team and position
p.d. pivot_table (df, index=' team ', columns=' position ', values=' points ',
               aggfunc=' sum '). reset_index ()

position team FG
0 to 14 8
1 B 22 9

A tabela dinâmica resultante resume a soma dos valores dos pontos por equipe e posição e também não possui um multiIndex.

Nota : Você pode encontrar a documentação completa da função pivot_table() do pandas aqui .

Recursos adicionais

Os tutoriais a seguir explicam como realizar outras operações comuns em pandas:

Pandas: como adicionar filtro à tabela dinâmica
Pandas: Como classificar a tabela dinâmica por valores na coluna
Pandas: como adicionar subtotais à tabela dinâmica

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *