Pandas에서 서로 다른 두 개의 Index(인덱스) 객체를 하나로 합치려면 index1.union(index2) 메서드를 사용하면 됩니다. 이 메서드는 두 인덱스의 합집합(Union)을 반환하며, 중복된 요소는 자동으로 제거되고 결과는 오름차순으로 정렬됩니다.
1. 라이브러리 임포트
가장 먼저 필요한 라이브러리를 가져옵니다.
import pandas as pd
2. 인덱스 객체 생성
예제에 사용할 두 개의 Pandas 인덱스를 생성합니다.
index1 = pd.Index([10, 20, 30, 40, 50])
index2 = pd.Index([80, 65, 60, 70, 55])
3. 인덱스 출력하기
생성한 index1과 index2를 화면에 출력해 내용을 확인합니다.
print("Pandas Index1...\n", index1)
print("Pandas Index2...\n", index2)
4. 합집합(Union) 수행하기
union() 메서드를 호출하여 두 인덱스의 합집합을 구합니다.
res = index1.union(index2)
전체 예제 코드
지금까지의 과정을 모두 포함한 완성된 코드는 다음과 같습니다.
import pandas as pd
# 두 개의 Pandas 인덱스 생성
index1 = pd.Index([10, 20, 30, 40, 50])
index2 = pd.Index([80, 65, 60, 70, 55])
# index1과 index2 출력
print("Pandas Index1...\n", index1)
print("Pandas Index2...\n", index2)
# 각 인덱스의 요소 개수 확인
print("\nindex1의 요소 개수...\n", index1.size)
print("\nindex2의 요소 개수...\n", index2.size)
# 합집합 수행
res = index1.union(index2)
# 두 인덱스의 합집합 출력
print("\nindex1과 index2의 합집합...\n", res)
실행 결과
위 코드를 실행하면 아래와 같은 결과가 출력됩니다.
Pandas Index1...
Int64Index([10, 20, 30, 40, 50], dtype='int64')
Pandas Index2...
Int64Index([80, 65, 60, 70, 55], dtype='int64')
Number of elements in index1...
5
Number of elements in index2...
5
The index1 and index2 Union...
Int64Index([10, 20, 30, 40, 50, 55, 60, 65, 70, 80], dtype='int64')
결과 해석 및 핵심 정리
실행 결과를 보면 두 인덱스의 모든 요소가 하나로 합쳐진 것을 확인할 수 있습니다. union() 메서드의 주요 특징은 다음과 같습니다.
- 중복 제거: 두 인덱스에 같은 값이 존재하면 한 번만 남겨 고유한 값만 반환합니다.
- 자동 정렬: 합집합 결과는 기본적으로 오름차순으로 정렬되어 반환됩니다. [10, 20, 30, 40, 50]과 [80, 65, 60, 70, 55]가 합쳐져 [10, 20, 30, 40, 50, 55, 60, 65, 70, 80] 순서로 정렬된 것을 볼 수 있습니다.
- | 연산자 활용: union() 메서드 대신 index1 | index2처럼 비트 OR 연산자를 사용해도 동일한 합집합을 얻을 수 있습니다.
- dtype 유지: 정수형 데이터로 구성된 인덱스는 int64 dtype을 그대로 유지한 채 반환됩니다.
참고로, Pandas 2.0부터는 Int64Index와 같은 세분화된 인덱스 클래스가 지원 중단(Deprecated)되어 단일 Index 클래스로 통합되었습니다. 따라서 최신 버전에서는 출력 결과가 Index([...], dtype='int64') 형태로 표시될 수 있지만, union() 메서드의 동작 방식은 동일합니다.