Ein Fehler, auf den Sie bei der Verwendung von Pandas stoßen können, ist:

ValueError: Index contains duplicate entries, cannot reshape

Dieser Fehler tritt normalerweise auf, wenn Sie versuchen, einen Pandas-Dataframe mithilfe der Funktion pivot() umzugestalten, der resultierende Dataframe jedoch mehrere Werte enthält, die dieselben Indexwerte aufweisen.

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

#Dataframe erstellen
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]})

#Dataframe anzeigen
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, indem wir Team als Zeilen und Position als Spalten verwenden:

# Der Versuch, das DataFrame umzugestalten
df.pivot(index='team', columns='position', values='points')

ValueError: Index contains duplicate entries, cannot reshape

Wir erhalten einen Fehler, weil es mehrere Zeilen im DataFrame gibt, die die gleichen Werte für team und position haben.

Wenn wir also versuchen, den DataFrame umzugestalten, weiß Pandas nicht, welcher points in jeder Zelle im 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 pivot_table() verwenden, um einen neuen DataFrame zu erstellen, der team als Zeilen, position als Spalten und die Summe der points in den Zellen des DataFrame verwendet:

df.pivot_table(index='team', columns='position', values='points', aggfunc='sum')

position  F  G
team        
A    16 12
B    21 13

Beachten Sie, dass wir dieses Mal keinen Fehler erhalten.

Die Werte im DataFrame zeigen die Summe der points für jede Kombination aus team und position.

Beachten Sie, dass wir auch einen anderen Wert für aggfunc verwenden könnten, z. B. den Mittelwert:

df.pivot_table(index='team', columns='position', values='points', aggfunc='mean')

position    F     G
team        
A     8.0   6.0
B     10.5  6.5

Durch die Verwendung des Arguments aggfunc innerhalb 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
Behebung: ValueError: Float NaN kann nicht in Integer konvertiert werden
Behebung: ValueError: Operanden konnten nicht zusammen mit Shapes gesendet werden

Statistik: Der Weg zur Datenanalyse

* Amazon Affiliate Link


Das könnte Sie auch interessieren: