Oplossing: kan alleen identiek gelabelde seriële objecten vergelijken
Een fout die u kunt tegenkomen bij het gebruik van panda’s is:
ValueError : Can only compare identically-labeled DataFrame objects
Deze fout treedt op wanneer u twee panda’s DataFrames probeert te vergelijken en de indexlabels of kolomlabels niet perfect overeenkomen.
Het volgende voorbeeld laat zien hoe u deze fout in de praktijk kunt corrigeren.
Hoe de fout te reproduceren
Laten we aannemen dat we de volgende twee panda-dataframes hebben:
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
Merk op dat de kolomlabels overeenkomen, maar de indexlabels niet.
Als we de twee DataFrames proberen te vergelijken, krijgen we een foutmelding:
#attempt to compare the DataFrames
df1 = df2
ValueError : Can only compare identically-labeled DataFrame objects
Hoe u de fout kunt oplossen
Er zijn een paar methoden die we kunnen gebruiken om deze fout op te lossen.
Methode 1: DataFrames vergelijken (inclusief indexlabels)
We kunnen de volgende syntaxis gebruiken om de twee DataFrames te vergelijken om te zien of ze perfect bij elkaar passen (inclusief indexlabels):
df1. equals (df2)
False
Dit vertelt ons dat de twee DataFrames niet perfect bij elkaar passen (inclusief de indexlabels).
Methode 2: DataFrames vergelijken (indexlabels negeren)
We kunnen de volgende syntaxis gebruiken om de twee DataFrames te vergelijken om te zien of ze perfect bij elkaar passen, terwijl we de indexlabels volledig negeren:
df1. reset_index (drop= True ). equals ( df2.reset_index (drop= True ))
True
Dit vertelt ons dat de twee DataFrames perfect bij elkaar passen (indexlabels worden genegeerd).
Methode 3: Vergelijk DataFrames rij voor rij
We kunnen de volgende syntaxis gebruiken om de twee DataFrames rij voor rij te vergelijken om te zien welke rijwaarden overeenkomen:
df1. reset_index (drop= True ) == df2. reset_index (drop= True )
assist points
0 True True
1 True True
2 True True
3 True True
Hierdoor kunnen we per rij zien welke waarden overeenkomen.
Aanvullende bronnen
In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende fouten in Python kunt oplossen:
Hoe KeyError in Panda’s te repareren
Oplossing: ValueError: Kan float NaN niet naar int converteren
Oplossing: ValueError: Operanden konden niet worden uitgezonden met vormen