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

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert