Como corrigir: valueerror: o índice contém entradas duplicadas, não pode ser remodelado
Um erro que você pode encontrar ao usar pandas é:
ValueError : Index contains duplicate entries, cannot reshape
Este erro normalmente ocorre quando você tenta remodelar um DataFrame do pandas usando a função pivot() , mas há vários valores no DataFrame resultante que compartilham os mesmos valores de índice.
O exemplo a seguir mostra como corrigir esse erro na prática.
Como reproduzir o erro
Suponha que temos o seguinte DataFrame do pandas:
import pandas as pd #createDataFrame df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'], ' position ': ['G', 'G', 'F', 'F', 'G', 'G', 'F', 'F'], ' points ': [5, 7, 7, 9, 4, 9, 9, 12]}) #view DataFrame df team position points 0 A G 5 1 A G 7 2 A F 7 3 A F 9 4 B G 4 5 B G 9 6 B F 9 7 B F 12
Agora suponha que tentamos girar o DataFrame, usando team como linhas e position como colunas:
#attempt to reshape DataFrame
df. pivot (index=' team ', columns=' position ', values=' points ')
ValueError : Index contains duplicate entries, cannot reshape
Recebemos um erro porque várias linhas no DataFrame compartilham os mesmos valores para team e position .
Portanto, quando tentamos remodelar o DataFrame, o pandas não sabe qual valor de ponto exibir em cada célula do DataFrame resultante.
Como corrigir o erro
Para corrigir esse erro, podemos usar a função pivot_table() com um argumento aggfunc específico para agregar os valores dos dados de uma determinada maneira.
Por exemplo, podemos usar pivot_table() para criar um novo DataFrame que usa equipe como linhas, posição como colunas e a soma dos valores dos pontos nas células do DataFrame:
df. pivot_table (index=' team ', columns=' position ', values=' points ', aggfunc=' sum ')
position F G
team
At 16 12
B 21 13
Observe que não recebemos um erro desta vez.
Os valores no DataFrame mostram a soma dos pontos de cada combinação de equipe e posição .
Observe que também poderíamos usar um valor diferente para aggfunc , como média:
df. pivot_table (index=' team ', columns=' position ', values=' points ', aggfunc=' mean ')
position F G
team
At 8.0 6.0
B 10.5 6.5
Usando o argumento aggfunc na função pivot_table() , podemos evitar erros.
Observação: você pode encontrar a documentação completa da função pivot_table() aqui .
Recursos adicionais
Os tutoriais a seguir explicam como corrigir outros erros comuns em Python:
Como corrigir KeyError em Pandas
Como corrigir: ValueError: não é possível converter float NaN em int
Como corrigir: ValueError: os operandos não puderam ser transmitidos com formas