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

ValueError: Can only compare identically-labeled DataFrame objects

Dieser Fehler tritt auf, wenn Sie versuchen, zwei Pandas DataFrames zu vergleichen, und entweder die Indexbezeichnungen oder die Spaltenbezeichnungen nicht perfekt übereinstimmen.

Das folgende Beispiel zeigt, wie dieser Fehler in der Praxis behoben werden kann.

So reproduzieren Sie den Fehler

Angenommen, wir haben die folgenden zwei Pandas DataFrames:

import pandas as pd

#Dataframe definieren
df1 = pd.DataFrame({'points': [25, 12, 15, 14],
                   'assists': [5, 7, 13, 12]})

df2 = pd.DataFrame({'points': [25, 12, 15, 14],
                    'assists': [5, 7, 13, 12]},
                     index=[3, 2, 1, 0])

#DataFrames anzeigen
print(df1)

   points  assists
0      25        5
1      12        7
2      15       13
3      14       12

print(df2)

   points  assists
3      25        5
2      12        7
1      15       13
0      14       12

Beachten Sie, dass die Spaltenbezeichnungen übereinstimmen, die Indexbezeichnungen jedoch nicht.

Wenn wir versuchen, die beiden DataFrames zu vergleichen, erhalten wir eine Fehlermeldung:

#Versuch, die DataFrames zu vergleichen
df1 = df2

ValueError: Can only compare identically-labeled DataFrame objects

So beheben Sie den Fehler

Es gibt einige Methoden, mit denen wir diesen Fehler beheben können.

Methode 1: DataFrames vergleichen (einschließlich Indexlabels)

Wir können die folgende Syntax verwenden, um die beiden DataFrames zu vergleichen, um zu sehen, ob sie perfekt übereinstimmen (einschließlich der Indexbezeichnungen):

df1.equals(df2)

False

Dies sagt uns, dass die beiden DataFrames nicht perfekt übereinstimmen (einschließlich der Indexbezeichnungen).

Methode 2: DataFrames vergleichen (Indexlabels ignorieren)

Wir können die folgende Syntax verwenden, um die beiden DataFrames zu vergleichen, um zu sehen, ob sie perfekt übereinstimmen, während wir die Indexbezeichnungen vollständig ignorieren:

df1.reset_index(drop=True).equals(df2.reset_index(drop=True))

True

Dies sagt uns, dass die beiden DataFrames perfekt übereinstimmen (ohne Berücksichtigung der Indexlabels).

Methode 3: DataFrames Zeile für Zeile vergleichen

Wir können die folgende Syntax verwenden, um die beiden DataFrames Zeile für Zeile zu vergleichen, um zu sehen, welche Zeilenwerte übereinstimmen:

df1.reset_index(drop=True) == df2.reset_index(drop=True)

      points    assists
0   True       True
1   True       True
2   True       True
3   True       True

Dadurch können wir sehen, welche Werte in jeder Zeile übereinstimmen.

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: