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

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *