Come risolvere il problema: valueerror: l'indice contiene voci duplicate, non può essere rimodellato
Un errore che potresti riscontrare quando usi i panda è:
ValueError : Index contains duplicate entries, cannot reshape
Questo errore si verifica in genere quando si tenta di rimodellare un DataFrame Panda utilizzando la funzione pivot() , ma nel DataFrame risultante sono presenti più valori che condividono gli stessi valori di indice.
L’esempio seguente mostra come correggere questo errore nella pratica.
Come riprodurre l’errore
Supponiamo di avere i seguenti panda DataFrame:
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
Supponiamo ora di provare a ruotare il DataFrame, utilizzando team come righe e position come colonne:
#attempt to reshape DataFrame
df. pivot (index=' team ', columns=' position ', values=' points ')
ValueError : Index contains duplicate entries, cannot reshape
Riceviamo un errore perché più righe nel DataFrame condividono gli stessi valori per team e posizione .
Pertanto, quando proviamo a rimodellare il DataFrame, i panda non sanno quale valore in punti visualizzare in ciascuna cella del DataFrame risultante.
Come correggere l’errore
Per correggere questo errore, possiamo utilizzare la funzione pivot_table() con un argomento specifico aggfunc per aggregare i valori dei dati in un certo modo.
Ad esempio, possiamo utilizzare pivot_table() per creare un nuovo DataFrame che utilizza team come righe, posizione come colonne e la somma dei valori in punti nelle celle del DataFrame:
df. pivot_table (index=' team ', columns=' position ', values=' points ', aggfunc=' sum ')
position F G
team
At 16 12
B 21 13
Tieni presente che questa volta non riceviamo un errore.
I valori nel DataFrame mostrano la somma dei punti per ciascuna combinazione di squadra e posizione .
Nota che potremmo anche usare un valore diverso per aggfunc , come Average:
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
Utilizzando l’argomento aggfunc nella funzione pivot_table() , possiamo evitare eventuali errori.
Nota: puoi trovare la documentazione completa per la funzione pivot_table() qui .
Risorse addizionali
I seguenti tutorial spiegano come correggere altri errori comuni in Python:
Come correggere l’errore chiave nei Panda
Come risolvere il problema: ValueError: impossibile convertire float NaN in int
Come risolvere il problema: ValueError: non è stato possibile trasmettere gli operandi con le forme