수정 방법: 동일하게 라벨이 붙은 직렬 개체만 비교할 수 있습니다.


pandas를 사용할 때 발생할 수 있는 오류는 다음과 같습니다.

 ValueError : Can only compare identically-labeled DataFrame objects

이 오류는 두 개의 Pandas DataFrame을 비교하려고 할 때 인덱스 레이블이나 열 레이블이 완벽하게 일치하지 않을 때 발생합니다.

다음 예에서는 실제로 이 오류를 수정하는 방법을 보여줍니다.

오류를 재현하는 방법

다음 두 개의 팬더 DataFrame이 있다고 가정해 보겠습니다.

 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: DataFrame 비교(색인 레이블 포함)

다음 구문을 사용하여 두 DataFrame을 비교하여 (인덱스 라벨 포함) 완벽하게 일치하는지 확인할 수 있습니다.

 df1. equals (df2)

False

이는 두 DataFrame이 완벽하게 일치하지 않음을 나타냅니다(인덱스 레이블 포함).

방법 2: DataFrame 비교(색인 레이블 무시)

다음 구문을 사용하여 두 DataFrame을 비교하여 인덱스 레이블을 완전히 무시하면서 완벽하게 일치하는지 확인할 수 있습니다.

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

True

이는 두 DataFrame이 완벽하게 일치함을 알려줍니다(인덱스 레이블 무시).

방법 3: DataFrame을 행별로 비교

다음 구문을 사용하여 두 DataFrame을 행별로 비교하여 어떤 행 값이 일치하는지 확인할 수 있습니다.

 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의 다른 일반적인 오류를 수정하는 방법을 설명합니다.

Pandas에서 KeyError를 수정하는 방법
수정 방법: ValueError: float NaN을 int로 변환할 수 없습니다.
해결 방법: ValueError: 피연산자를 모양과 함께 브로드캐스트할 수 없습니다.

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다