10-10. 비교 (compare)
DataFrame.compare(other, align_axis=1, keep_shape=False, keep_equal=False)
개요
compare 메서드는 두 객체의 요소의 차이를 반환합니다.
사용법
기본 사용법
self.compare(other, align_axis=1, keep_shape=False, keep_equal=False)
other : 원본과 비교할 데이터입니다. align_axis : {0 : index / 1 : columns} self와 other를 정렬할 축입니다.
keep_shape : 원본의 모양을 유지할지 여부입니다. False인 경우 차이가 있는 행만 출력합니다.
keep_equal : 값이 같은경우 값을 출력할지 여부입니다. 기본값은 False로 NaN을 출력합니다.
예시
먼저 일부 값이 다른 4x3짜리 데이터프레임 두개를 생성하겠습니다.
idx = ['row1','row2','row3','row4']
col = ['col1','col2','col3']
data1 = [['A',1,11],['B',2,12],['C',3,13],['D',4,14]]
data2 = [['X',1,11],['B','Y',12],['C',3,13],['D',4,'Z']]
df1 = pd.DataFrame(data1, idx, col)
print(df1)
>>
col1 col2 col3
row1 A 1 11
row2 B 2 12
row3 C 3 13
row4 D 4 14
df2 = pd.DataFrame(data2, idx, col)
print(df2)
>>
col1 col2 col3
row1 X 1 11
row2 B Y 12
row3 C 3 13
row4 D 4 Z
기본적인 사용법
compare메서드를 이용해서 단순히 df1과 df2를 비교할 경우 아래와 같이 self와 other이 multi columns로 추가되며 차이가 있는 행만 출력하고, 동일한 값은 NaN을 출력하게 됩니다.
print(df1.compare(df2))
>>
col1 col2 col3
self other self other self other
row1 A X NaN NaN NaN NaN
row2 NaN NaN 2.0 Y NaN NaN
row4 NaN NaN NaN NaN 14.0 Z
align_axis인수의 사용
align_axis인수를 사용하여 self와 other 카테고리가 multi index로 반환될지 multi columns로 반환될지 지정할 수 있습니다.
align_axis=0일 경우 multi index로 출력됩니다.
print(df1.compare(other=df2, align_axis=0))
>>
col1 col2 col3
row1 self A NaN NaN
other X NaN NaN
row2 self NaN 2.0 NaN
other NaN Y NaN
row4 self NaN NaN 14.0
other NaN NaN Z
align_axis=1일 경우 multi columns으로 출력됩니다.(기본값)
print(df1.compare(other=df2, align_axis=1))
>>
col1 col2 col3
self other self other self other
row1 A X NaN NaN NaN NaN
row2 NaN NaN 2.0 Y NaN NaN
row4 NaN NaN NaN NaN 14.0 Z
keep_shape인수의 사용
keep_shape=True로 사용할 경우 기존 열을 모두 출력하게되고, keep_shape=False일 경우(기본값) 차이가 있는 열만 출력하게 됩니다.
print(df1.compare(other=df2, keep_shape=True))
>>
col1 col2 col3
self other self other self other
row1 A X NaN NaN NaN NaN
row2 NaN NaN 2.0 Y NaN NaN
row3 NaN NaN NaN NaN NaN NaN
row4 NaN NaN NaN NaN 14.0 Z
print(df1.compare(other=df2, keep_shape=False))
>>
col1 col2 col3
self other self other self other
row1 A X NaN NaN NaN NaN
row2 NaN NaN 2.0 Y NaN NaN
row4 NaN NaN NaN NaN 14.0 Z
keep_equal인수의 사용
keep_equal인수를 사용할 경우 같은값을 출력할지 아니면 NaN으로 출력할지 지정할 수 있습니다.
keep_eaual=True인 경우 같은값도 출력합니다.
print(df1.compare(other=df2, keep_equal=True))
>>
col1 col2 col3
self other self other self other
row1 A X 1 1 11 11
row2 B B 2 Y 12 12
row4 D D 4 4 14 Z
keep_eaual=False인 경우 같은값은 NaN을 출력합니다.(기본값)
print(df1.compare(other=df2, keep_equal=False))
>>
col1 col2 col3
self other self other self other
row1 A X NaN NaN NaN NaN
row2 NaN NaN 2.0 Y NaN NaN
row4 NaN NaN NaN NaN 14.0 Z
'파이썬완전정복-Pandas DataFrame > 10. 정보' 카테고리의 다른 글
Pandas DataFrame 10-12. 고유한 요소의 수 (nunique) (0) | 2022.01.24 |
---|---|
Pandas DataFrame 10-11. 고유한 행의 수 (value_counts) (0) | 2022.01.24 |
Pandas DataFrame 10-09. 키값(열의 요소) 반환 (get) (0) | 2022.01.24 |
Pandas DataFrame 10-08. 정보축 (keys) (0) | 2022.01.24 |
Pandas DataFrame 10-07. 차원의 형태 (shape) (0) | 2022.01.24 |