Lösung: es können nur identisch gekennzeichnete serienobjekte verglichen werden


Ein Fehler, der bei der Verwendung von Pandas auftreten kann, ist:

 ValueError : Can only compare identically-labeled DataFrame objects

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

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

So reproduzieren Sie den Fehler

Nehmen wir an, wir haben die folgenden zwei Panda-DataFrames:

 import pandas as pd

#define DataFrames
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])

#view DataFrames
print (df1)

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

print (df2)

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

Beachten Sie, dass die Spaltenbeschriftungen übereinstimmen, die Indexbeschriftungen jedoch nicht.

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

 #attempt to compare the DataFrames
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 Indexbezeichnungen)

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

 df1. equals (df2)

False

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

Methode 2: DataFrames vergleichen (Indexbezeichnungen ignorieren)

Wir können die folgende Syntax verwenden, um die beiden DataFrames zu vergleichen, um zu sehen, ob sie perfekt übereinstimmen, wobei 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 (Indexbezeichnungen werden ignoriert).

Methode 3: DataFrames Zeile für Zeile vergleichen

Mit der folgenden Syntax können wir die beiden DataFrames Zeile für Zeile vergleichen, um zu sehen, welche Zeilenwerte übereinstimmen:

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

      assist points
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
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