Pandas에서 두 인덱스(Index) 객체의 대칭차집합(symmetric difference)을 계산하려면 index1.symmetric_difference(index2) 메서드를 사용합니다. 대칭차집합은 두 인덱스 중 한쪽에만 존재하고 양쪽 모두에는 포함되지 않은 요소들을 새로운 인덱스로 반환합니다.
먼저 필요한 라이브러리를 임포트합니다.
import pandas as pd
두 개의 Pandas 인덱스를 생성합니다.
index1 = pd.Index([10, 20, 30, 40, 50]) index2 = pd.Index([40, 10, 60, 20, 55])
생성한 인덱스1과 인덱스2를 출력해 내용을 확인합니다.
print("Pandas Index1...\n", index1)
print("Pandas Index2...\n", index2)이제 두 인덱스에 대해 대칭차집합 연산을 수행합니다.
res = index1.symmetric_difference(index2)
예제 전체 코드
다음은 위 과정을 하나로 정리한 전체 예제 코드입니다.
import pandas as pd
# 두 개의 Pandas 인덱스 생성
index1 = pd.Index([10, 20, 30, 40, 50])
index2 = pd.Index([40, 10, 60, 20, 55])
# 인덱스1과 인덱스2 출력
print("Pandas Index1...\n", index1)
print("Pandas Index2...\n", index2)
# 각 인덱스의 요소 개수 확인
print("\n인덱스1의 요소 개수...\n", index1.size)
print("\n인덱스2의 요소 개수...\n", index2.size)
# 대칭차집합 수행
res = index1.symmetric_difference(index2)
# 두 인덱스의 대칭차집합 결과 출력
print("\n인덱스1과 인덱스2의 대칭차집합...\n", res)실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Pandas Index1... Int64Index([10, 20, 30, 40, 50], dtype='int64') Pandas Index2... Int64Index([40, 10, 60, 20, 55], dtype='int64') 인덱스1의 요소 개수... 5 인덱스2의 요소 개수... 5 인덱스1과 인덱스2의 대칭차집합... Int64Index([30, 50, 55, 60], dtype='int64')
결과 해석
두 인덱스의 공통 요소인 10, 20, 40은 결과에서 제외되고, 인덱스1에만 있는 30, 50과 인덱스2에만 있는 55, 60이 최종 대칭차집합으로 반환됩니다.
참고로, 최신 버전의 Pandas에서는 Int64Index가 deprecated되어 실행 결과가 Index([30, 50, 55, 60], dtype='int64') 형태로 표시될 수 있습니다. 또한 symmetric_difference() 메서드 대신 ^ 연산자(index1 ^ index2)를 사용해도 동일한 결과를 얻을 수 있습니다.