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