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