Pandas에서 한 인덱스에는 있지만 다른 인덱스에는 없는 요소들로 구성된 새 인덱스를 만들고 싶다면 difference() 메서드를 사용하면 됩니다. 이때 sort 매개변수를 False로 설정하면 결과가 정렬되지 않은 상태, 즉 원래 순서 그대로 유지됩니다.
먼저 필요한 라이브러리를 임포트합니다.
import pandas as pd
두 개의 Pandas 인덱스를 생성합니다.
index1 = pd.Index([30, 10, 20, 50, 40]) index2 = pd.Index([80, 40, 60, 20, 55])
생성한 index1과 index2를 화면에 출력해 확인합니다.
print("Pandas Index1...\n",index1)
print("Pandas Index2...\n",index2)이제 두 인덱스의 차집합을 구합니다. sort 매개변수에 False를 전달했기 때문에 결과는 정렬되지 않은 채 반환됩니다.
res = index1.difference(index2, sort=False)
예제 코드
전체 코드는 다음과 같습니다.
import pandas as pd
# 두 개의 Pandas 인덱스 생성
index1 = pd.Index([30, 10, 20, 50, 40])
index2 = pd.Index([80, 40, 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.difference(index2, sort=False)
# 차집합 결과 출력: 다른 인덱스에 없는 요소들로 이루어진 새 인덱스
print("\nDifference...\n",res)실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Pandas Index1... Int64Index([30, 10, 20, 50, 40], dtype='int64') Pandas Index2... Int64Index([80, 40, 60, 20, 55], dtype='int64') Number of elements in index1... 5 Number of elements in index2... 5 Difference... Int64Index([30, 10, 50], dtype='int64')
결과 해석
출력 결과를 보면 index1의 요소 중 index2에도 포함된 20과 40은 제거되었고, 나머지 30, 10, 50만 새 인덱스에 남았습니다. 또한 sort=False 옵션 덕분에 결과가 오름차순(10, 30, 50)으로 정렬되지 않고 원래 인덱스의 순서(30, 10, 50)를 그대로 유지하는 것을 확인할 수 있습니다.