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

Add a Comment

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