Як виправити: можна порівнювати лише серійні об’єкти з однаковими мітками


Помилка, з якою ви можете зіткнутися під час використання панд:

 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: Операнди не можна транслювати з фігурами

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *