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

Python Pandas – 두 Index 객체의 교집합(Intersection) 구하는 방법

Pandas에서 두 개의 Index 객체 사이의 교집합을 구하려면 index1.intersection(index2) 메서드를 사용하면 됩니다. 이 메서드는 두 인덱스에 공통으로 존재하는 요소들만 모아 새로운 Index 객체를 반환합니다.

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. 교집합 수행하기

intersection() 메서드를 호출하여 두 인덱스의 교집합을 계산합니다.

res = index1.intersection(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("\nNumber of elements in index1...\n", index1.size)
print("\nNumber of elements in index2...\n", index2.size)

# 교집합 수행
res = index1.intersection(index2)

# 두 인덱스의 교집합 결과 출력
print("\nThe index1 and index2 intersection...\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 intersection...
Int64Index([], dtype='int64')

결과 해석

출력 결과를 살펴보면 흥미로운 점이 있습니다. 두 인덱스는 각각 5개의 요소를 가지고 있지만, 교집합 결과는 빈 Index 객체(Int64Index([], dtype='int64'))입니다. 그 이유는 index1의 요소(10, 20, 30, 40, 50)와 index2의 요소(80, 65, 60, 70, 55) 사이에 공통된 값이 하나도 없기 때문입니다.

참고: 공통 값이 있는 경우

만약 두 인덱스가 같은 값을 포함하고 있다면, 해당 값들만 담긴 새로운 Index가 반환됩니다. 예를 들어 index2에 20이라는 값이 있다면 교집합 결과에는 20만 포함됩니다.

이처럼 intersection() 메서드는 SQL의 INNER JOIN과 유사한 개념으로, 두 데이터 집합에서 중복되는 부분만 추출할 때 유용하게 활용됩니다.