Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python Pandas – 두 인덱스 객체의 합집합(Union) 구하는 방법

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() 메서드의 동작 방식은 동일합니다.