Як виправити: можна порівнювати лише серійні об’єкти з однаковими мітками
Помилка, з якою ви можете зіткнутися під час використання панд:
ValueError : Can only compare identically-labeled DataFrame objects
Ця помилка виникає, коли ви намагаєтеся порівняти два pandas DataFrames, а мітки індексів або мітки стовпців не збігаються ідеально.
У наступному прикладі показано, як виправити цю помилку на практиці.
Як відтворити помилку
Припустімо, що ми маємо наступні два panda DataFrames:
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
Зауважте, що мітки стовпців збігаються, а мітки індексів – ні.
Якщо ми спробуємо порівняти два DataFrames, ми отримаємо помилку:
#attempt to compare the DataFrames
df1 = df2
ValueError : Can only compare identically-labeled DataFrame objects
Як виправити помилку
Є кілька методів, за допомогою яких ми можемо вирішити цю помилку.
Спосіб 1: Порівняйте DataFrames (включаючи мітки індексу)
Ми можемо використати наступний синтаксис, щоб порівняти два DataFrames, щоб побачити, чи ідеально вони збігаються (включаючи мітки індексу):
df1. equals (df2)
False
Це говорить нам про те, що два DataFrames не збігаються ідеально (включаючи мітки індексів).
Спосіб 2: Порівняйте DataFrames (ігноруйте індексні мітки)
Ми можемо використовувати наступний синтаксис, щоб порівняти два DataFrames, щоб побачити, чи вони ідеально відповідають, повністю ігноруючи мітки індексу:
df1. reset_index (drop= True ). equals ( df2.reset_index (drop= True ))
True
Це говорить нам про те, що два DataFrames ідеально збігаються (ігноруючи мітки індексів).
Спосіб 3: Порівняйте DataFrames рядок за рядком
Ми можемо використовувати наступний синтаксис, щоб порівняти два DataFrames рядок за рядком, щоб побачити, які значення рядка збігаються:
df1. reset_index (drop= True ) == df2. reset_index (drop= True )
assist points
0 True True
1 True True
2 True True
3 True True
Це дозволяє нам побачити, які значення збігаються в кожному рядку.
Додаткові ресурси
У наступних посібниках пояснюється, як виправити інші типові помилки в Python:
Як виправити KeyError у Pandas
Як виправити: ValueError: неможливо перетворити float NaN на int
Як виправити: ValueError: Операнди не можна транслювати з фігурами