Jak naprawić: można porównywać tylko obiekty szeregowe o identycznych etykietach


Błąd, który możesz napotkać podczas korzystania z pand, to:

 ValueError : Can only compare identically-labeled DataFrame objects

Ten błąd występuje, gdy próbujesz porównać dwie ramki danych pand, a etykiety indeksu lub etykiety kolumn nie pasują idealnie.

Poniższy przykład pokazuje, jak w praktyce skorygować ten błąd.

Jak odtworzyć błąd

Załóżmy, że mamy następujące dwie ramki danych pandy:

 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

Zwróć uwagę, że etykiety kolumn są zgodne, ale etykiety indeksu nie.

Jeśli spróbujemy porównać dwie ramki DataFrame, otrzymamy błąd:

 #attempt to compare the DataFrames
df1 = df2

ValueError : Can only compare identically-labeled DataFrame objects

Jak naprawić błąd

Istnieje kilka metod, których możemy użyć, aby rozwiązać ten błąd.

Metoda 1: Porównaj ramki danych (w tym etykiety indeksu)

Możemy użyć następującej składni, aby porównać dwie ramki danych i sprawdzić, czy są idealnie dopasowane (w tym etykiety indeksu):

 df1. equals (df2)

False

To mówi nam, że dwie ramki danych nie pasują idealnie (w tym etykiety indeksu).

Metoda 2: Porównaj ramki danych (zignoruj etykiety indeksu)

Możemy użyć następującej składni, aby porównać dwie ramki danych i sprawdzić, czy są idealnie dopasowane, całkowicie ignorując etykiety indeksu:

 df1. reset_index (drop= True ). equals ( df2.reset_index (drop= True ))

True

To mówi nam, że dwie ramki danych są idealnie dopasowane (ignorując etykiety indeksu).

Metoda 3: Porównaj DataFrames wiersz po wierszu

Możemy użyć następującej składni, aby porównać dwie ramki DataFrames wiersz po wierszu, aby zobaczyć, które wartości wierszy pasują:

 df1. reset_index (drop= True ) == df2. reset_index (drop= True )

      assist points
0 True True
1 True True
2 True True
3 True True

Dzięki temu możemy zobaczyć, które wartości pasują w każdym wierszu.

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak naprawić inne typowe błędy w Pythonie:

Jak naprawić błąd KeyError w Pandach
Jak naprawić: ValueError: Nie można przekonwertować float NaN na int
Jak naprawić: Błąd wartości: Nie można rozgłaszać argumentów z kształtami

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *