수정 방법: 동일하게 라벨이 붙은 직렬 개체만 비교할 수 있습니다.
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: 피연산자를 모양과 함께 브로드캐스트할 수 없습니다.