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