Pandas: como remodelar o dataframe de longo para largo
Você pode usar a seguinte sintaxe básica para converter um DataFrame do pandas do formato longo para o formato largo:
df = pd. pivot (df, index=' col1 ', columns=' col2 ', values=' col3 ')
Neste cenário, col1 se tornará o índice, col2 se tornará as colunas e col3 será usado como valores dentro do DataFrame.
O exemplo a seguir mostra como usar essa sintaxe na prática.
Exemplo: remodelar o DataFrame do Pandas de longo para largo
Suponha que temos o seguinte DataFrame do pandas em um formato longo:
import pandas as pd #create DataFrame in long format df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'], ' player ': [1, 2, 3, 4, 1, 2, 3, 4], ' points ': [11, 8, 10, 6, 12, 5, 9, 4]}) #view DataFrame df team player points 0 to 1 11 1 to 2 8 2 to 3 10 3 to 4 6 4 B 1 12 5 B 2 5 6 B 3 9 7 B 4 4
Podemos usar a seguinte sintaxe para remodelar este DataFrame do formato longo para o formato amplo:
#reshape DataFrame from long format to wide format
df = pd. pivot (df, index=' team ', columns=' player ', values=' points ')
#view updated DataFrame
df
player 1 2 3 4
team
A 11 8 10 6
B 12 5 9 4
O DataFrame agora está em formato amplo.
Usamos “team” como coluna de índice, “player” como colunas e “points” como valores dentro do DataFrame.
Observe que poderíamos usar “player” como coluna de índice e “team” como colunas, se desejarmos:
#reshape DataFrame from long format to wide format
df = pd. pivot (df, index=' player ', columns=' team ', values=' points ')
#view updated DataFrame
df
team A B
player
1 11 12
2 8 5
3 10 9
4 6 4
Este DataFrame também está em formato amplo.
Nota : Você pode encontrar a documentação completa da função pandas pivot() aqui .
Recursos adicionais
Os tutoriais a seguir explicam como realizar outras operações comuns em Python:
Pandas: Como remodelar o DataFrame de largo para longo
Como adicionar linhas a um DataFrame do Pandas
Como adicionar colunas a um DataFrame do Pandas
Como contar ocorrências de valores específicos no Pandas DataFrame