Одна ошибка, с которой вы можете столкнуться при использовании pandas:
ValueError : Can only compare identically-labeled DataFrame objects
Эта ошибка возникает, когда вы пытаетесь сравнить два кадра данных pandas, и либо метки индекса, либо метки столбцов не совпадают полностью.
В следующем примере показано, как исправить эту ошибку на практике.
Как воспроизвести ошибку
Предположим, у нас есть следующие два Pandas 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)
points assists
0 25 5
1 12 7
2 15 13
3 14 12
print(df2)
points assists
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: сравнение фреймов данных (включая метки индекса)
Мы можем использовать следующий синтаксис, чтобы сравнить два кадра данных, чтобы увидеть, полностью ли они совпадают (включая метки индекса):
df1.equals(df2)
False
Это говорит нам о том, что два кадра данных не полностью совпадают (включая метки индекса).
Способ 2: сравнить кадры данных (игнорировать метки индекса)
Мы можем использовать следующий синтаксис, чтобы сравнить два кадра данных, чтобы увидеть, полностью ли они совпадают, полностью игнорируя метки индекса:
df1.reset_index(drop= True ).equals(df2. reset_index(drop= True ))
True
Это говорит нам о том, что два кадра данных полностью совпадают (без учета меток индекса).
Способ 3: сравнение фреймов данных построчно
Мы можем использовать следующий синтаксис для сравнения двух кадров данных построчно, чтобы увидеть, какие значения строк совпадают:
df1.reset_index(drop= True ) == df2. reset_index(drop= True )
points assists
0 True True
1 True True
2 True True
3 True True
Это позволяет нам видеть, какие значения совпадают в каждой строке.
Дополнительные ресурсы
В следующих руководствах объясняется, как исправить другие распространенные ошибки в Python:
Как исправить KeyError в Pandas
Как исправить: ValueError: невозможно преобразовать число с плавающей запятой NaN в целое число
Как исправить: ValueError: операнды не могли транслироваться вместе с фигурами