So beheben sie: valueerror: der index enthält doppelte einträge und kann nicht umgestaltet werden
Ein Fehler, der bei der Verwendung von Pandas auftreten kann, ist:
ValueError : Index contains duplicate entries, cannot reshape
Dieser Fehler tritt normalerweise auf, wenn Sie versuchen, einen Pandas-DataFrame mithilfe der Funktion „pivot()“ umzuformen, der resultierende DataFrame jedoch mehrere Werte enthält, die dieselben Indexwerte haben.
Das folgende Beispiel zeigt, wie dieser Fehler in der Praxis behoben werden kann.
So reproduzieren Sie den Fehler
Angenommen, wir haben den folgenden Pandas-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
Nehmen wir nun an, wir versuchen, den DataFrame zu drehen und dabei „team“ als Zeilen und „position“ als Spalten zu verwenden:
#attempt to reshape DataFrame
df. pivot (index=' team ', columns=' position ', values=' points ')
ValueError : Index contains duplicate entries, cannot reshape
Wir erhalten eine Fehlermeldung, da mehrere Zeilen im DataFrame dieselben Werte für Team und Position aufweisen.
Wenn wir also versuchen, den DataFrame umzuformen, weiß Pandas nicht, welcher Punktwert in jeder Zelle des resultierenden DataFrame angezeigt werden soll.
So beheben Sie den Fehler
Um diesen Fehler zu beheben, können wir die Funktion „pivot_table()“ mit einem bestimmten aggfunc- Argument verwenden, um die Datenwerte auf eine bestimmte Weise zu aggregieren.
Beispielsweise können wir mit „pivot_table()“ einen neuen DataFrame erstellen, der Team als Zeilen, Position als Spalten und die Summe der Punktwerte in den Zellen des DataFrame verwendet:
df. pivot_table (index=' team ', columns=' position ', values=' points ', aggfunc=' sum ')
position F G
team
At 16 12
B 21 13
Beachten Sie, dass wir dieses Mal keine Fehlermeldung erhalten.
Die Werte im DataFrame zeigen die Summe der Punkte für jede Team- und Positionskombination .
Beachten Sie, dass wir für aggfunc auch einen anderen Wert verwenden könnten, beispielsweise „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
Durch die Verwendung des aggfunc- Arguments in der Funktion „pivot_table()“ können wir Fehler vermeiden.
Hinweis: Die vollständige Dokumentation zur Funktion „pivot_table()“ finden Sie hier .
Zusätzliche Ressourcen
Die folgenden Tutorials erklären, wie Sie andere häufige Fehler in Python beheben:
So beheben Sie KeyError in Pandas
So beheben Sie: ValueError: Float NaN kann nicht in int konvertiert werden
So beheben Sie: ValueError: Operanden konnten nicht mit Formen übertragen werden