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

Python Pandas – 두 인덱스 객체의 대칭 차집합을 계산하고 정렬하지 않은 결과 얻기

Pandas에서 두 개의 Index 객체 간의 대칭 차집합(symmetric difference)을 계산하려면 symmetric_difference() 메서드를 사용합니다. 대칭 차집합이란 두 인덱스 중 어느 한쪽에만 존재하는 요소들을 모아 만든 집합으로, 양쪽에 공통으로 있는 요소는 제외됩니다.

결과를 정렬된 상태가 아닌 원래 순서 그대로 유지하려면 sort 매개변수를 False로 설정하면 됩니다.

라이브러리 임포트

먼저 필요한 라이브러리를 임포트합니다.

import pandas as pd

인덱스 생성

두 개의 Pandas 인덱스를 생성합니다.

index1 = pd.Index([50, 30, 20, 40, 10])
index2 = pd.Index([40, 10, 60, 20, 55])

생성한 index1과 index2를 출력해 확인합니다.

print("Pandas Index1...\n",index1)
print("Pandas Index2...\n",index2)

대칭 차집합 계산하기

대칭 차집합을 수행합니다. 이때 sort 매개변수를 False로 지정하여 결과가 자동으로 정렬되지 않도록 합니다.

res = index1.symmetric_difference(index2, sort=False)

전체 예제 코드

지금까지의 내용을 종합한 전체 코드는 다음과 같습니다.

import pandas as pd

# 두 개의 Pandas 인덱스 생성
index1 = pd.Index([50, 30, 20, 40, 10])
index2 = pd.Index([40, 10, 60, 20, 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)

# 대칭 차집합 수행
# sort 매개변수를 False로 설정하여 정렬하지 않음
res = index1.symmetric_difference(index2, sort=False)

# 두 인덱스의 대칭 차집합(정렬되지 않은 결과) 출력
print("\nThe index1 and index2 symmetric difference with unsorted result...\n",res)

실행 결과

위 코드를 실행하면 다음과 같은 출력이 생성됩니다.

Pandas Index1...
Int64Index([50, 30, 20, 40, 10], dtype='int64')
Pandas Index2...
Int64Index([40, 10, 60, 20, 55], dtype='int64')

Number of elements in index1...
5

Number of elements in index2...
5

The index1 and index2 symmetric difference with unsorted result...
Int64Index([50, 30, 60, 55], dtype='int64')

출력 결과를 보면 두 인덱스에 공통으로 포함된 요소인 40, 10, 20은 제외되고, 한쪽에만 존재하는 요소들인 50, 30, 60, 55만 남은 것을 확인할 수 있습니다. 또한 sort=False 옵션 덕분에 결과가 오름차순으로 정렬되지 않고 연산 과정에서의 원래 순서를 그대로 유지하는 것을 볼 수 있습니다.