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

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert