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

Python Pandas – 두 인덱스 객체의 대칭차집합 계산 방법

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)를 사용해도 동일한 결과를 얻을 수 있습니다.