Как исправить: можно сравнивать только серийные объекты с одинаковой маркировкой.


Ошибка, с которой вы можете столкнуться при использовании панд:

 ValueError : Can only compare identically-labeled DataFrame objects

Эта ошибка возникает, когда вы пытаетесь сравнить два DataFrames pandas, а метки индексов или метки столбцов не совпадают полностью.

В следующем примере показано, как исправить эту ошибку на практике.

Как воспроизвести ошибку

Предположим, у нас есть следующие два кадра данных 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

Обратите внимание, что метки столбцов совпадают, а метки индексов — нет.

Если мы попытаемся сравнить два DataFrame, мы получим ошибку:

 #attempt to compare the DataFrames
df1 = df2

ValueError : Can only compare identically-labeled DataFrame objects

Как исправить ошибку

Есть несколько методов, которые мы можем использовать для устранения этой ошибки.

Способ 1. Сравните DataFrames (включая метки индекса)

Мы можем использовать следующий синтаксис, чтобы сравнить два DataFrame и убедиться, что они идеально совпадают (включая индексные метки):

 df1. equals (df2)

False

Это говорит нам о том, что два DataFrame не совпадают идеально (включая метки индексов).

Способ 2. Сравните фреймы данных (игнорируйте индексные метки)

Мы можем использовать следующий синтаксис, чтобы сравнить два DataFrame и убедиться, что они идеально совпадают, полностью игнорируя индексные метки:

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

True

Это говорит нам о том, что два DataFrame идеально совпадают (игнорируя индексные метки).

Способ 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: невозможно преобразовать число с плавающей запятой NaN в int.
Как исправить: ValueError: операнды не могут быть переданы с помощью фигур.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *