판다스(Pandas) 인덱스에서 기존의 정렬 순서를 유지하면서 배열로 전달된 값들을 삽입해야 할 인덱스 위치를 찾으려면 index.searchsorted() 메서드를 사용하면 됩니다.
searchsorted() 메서드란?
searchsorted()는 정렬된 인덱스에서 특정 값이 삽입될 때 올바른 순서가 유지되는 위치(삽입 지점)를 찾아주는 메서드입니다. 이진 탐색(binary search) 방식으로 동작하기 때문에 매우 빠르게 결과를 반환합니다.
1. 필요한 라이브러리 임포트
먼저 필요한 라이브러리를 임포트합니다.
import pandas as pd
2. 판다스 인덱스 생성
정렬된 숫자 값들로 구성된 판다스 인덱스를 생성합니다.
index = pd.Index([10, 20, 30, 40, 50])
3. 생성한 인덱스 출력
생성된 판다스 인덱스를 화면에 출력합니다.
print("Pandas Index...\n", index)4. searchsorted로 삽입 위치 찾기
삽입할 값들을 배열 형태로 전달하고, 각 값이 배치되어야 할 정확한 인덱스 위치를 확인합니다.
print("\n값이 삽입되어야 할 정확한 위치?...\n", index.searchsorted([35, 60]))전체 예제 코드
다음은 위 과정을 모두 포함한 전체 코드입니다.
import pandas as pd
# 판다스 인덱스 생성
index = pd.Index([10, 20, 30, 40, 50])
# 판다스 인덱스 출력
print("Pandas Index...\n", index)
# 인덱스에 포함된 요소 개수 확인
print("\n인덱스의 요소 개수...\n", index.size)
# searchsorted 실행
# 삽입할 값들을 배열로 전달하여 해당 값들이 배치되어야 할
# 정확한 인덱스 위치를 반환받습니다.
print("\n값이 삽입되어야 할 정확한 위치?...\n", index.searchsorted([35, 60]))실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Pandas Index... Int64Index([10, 20, 30, 40, 50], dtype='int64') 인덱스의 요소 개수... 5 값이 삽입되어야 할 정확한 위치?... [3 5]
결과 해석
출력 결과를 살펴보면 다음과 같습니다.
- 35는 30과 40 사이에 위치해야 하므로 인덱스 3번 자리에 삽입됩니다.
- 60은 기존 최댓값 50보다 크므로 마지막인 인덱스 5번 자리에 삽입됩니다.
이처럼 searchsorted() 메서드를 활용하면 정렬된 인덱스에서 새로운 값들의 올바른 삽입 위치를 손쉽게 계산할 수 있습니다.