Come risolvere il problema: è possibile confrontare solo oggetti seriali etichettati in modo identico
Un errore che potresti riscontrare quando usi i panda è:
ValueError : Can only compare identically-labeled DataFrame objects
Questo errore si verifica quando si tenta di confrontare due DataFrames Panda e le etichette dell’indice o le etichette delle colonne non corrispondono perfettamente.
L’esempio seguente mostra come correggere questo errore nella pratica.
Come riprodurre l’errore
Supponiamo di avere i seguenti due DataFrames panda:
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
Tieni presente che le etichette delle colonne corrispondono, ma le etichette dell’indice no.
Se proviamo a confrontare i due DataFrame, riceveremo un errore:
#attempt to compare the DataFrames
df1 = df2
ValueError : Can only compare identically-labeled DataFrame objects
Come correggere l’errore
Esistono alcuni metodi che possiamo utilizzare per risolvere questo errore.
Metodo 1: confrontare i dataframe (comprese le etichette dell’indice)
Possiamo utilizzare la seguente sintassi per confrontare i due DataFrame per vedere se corrispondono perfettamente (comprese le etichette dell’indice):
df1. equals (df2)
False
Questo ci dice che i due DataFrame non corrispondono perfettamente (comprese le etichette dell’indice).
Metodo 2: confrontare i frame di dati (ignorare le etichette dell’indice)
Possiamo utilizzare la seguente sintassi per confrontare i due DataFrame per vedere se corrispondono perfettamente, ignorando completamente le etichette dell’indice:
df1. reset_index (drop= True ). equals ( df2.reset_index (drop= True ))
True
Questo ci dice che i due DataFrame corrispondono perfettamente (ignorando le etichette dell’indice).
Metodo 3: confrontare i frame di dati riga per riga
Possiamo utilizzare la seguente sintassi per confrontare i due DataFrame riga per riga per vedere quali valori di riga corrispondono:
df1. reset_index (drop= True ) == df2. reset_index (drop= True )
assist points
0 True True
1 True True
2 True True
3 True True
Questo ci permette di vedere quali valori corrispondono in ogni riga.
Risorse addizionali
I seguenti tutorial spiegano come correggere altri errori comuni in Python:
Come correggere l’errore chiave nei Panda
Come risolvere il problema: ValueError: impossibile convertire float NaN in int
Come risolvere il problema: ValueError: non è stato possibile trasmettere gli operandi con le forme