Pandas Index에서 기존의 정렬 순서를 유지하면서 새로운 요소를 삽입해야 하는 위치를 찾으려면 index.searchsorted() 메서드를 사용하면 됩니다. 이 메서드는 이진 탐색(binary search) 방식으로 동작하기 때문에 대용량 데이터에서도 매우 빠르게 삽입 위치를 계산할 수 있습니다.
기본 사용 방법
먼저 필요한 라이브러리를 임포트합니다.
import pandas as pd
Pandas 인덱스를 생성합니다.
index = pd.Index([10, 20, 30, 40, 50])
생성된 Pandas 인덱스를 화면에 출력합니다.
print("Pandas Index...\n", index)searchsorted 메서드에 삽입할 값을 전달하면, 해당 값이 들어가야 할 정확한 인덱스 위치를 반환받을 수 있습니다.
print("\n요소가 삽입되어야 할 정확한 위치는?...\n", index.searchsorted(45))전체 예제 코드
다음은 지금까지 설명한 내용을 모두 포함한 완성된 코드입니다.
import pandas as pd
# Pandas 인덱스 생성
index = pd.Index([10, 20, 30, 40, 50])
# Pandas 인덱스 출력
print("Pandas Index...\n", index)
# 인덱스에 포함된 요소 개수 반환
print("\n인덱스의 요소 개수...\n", index.size)
# searchsorted 실행
# 삽입할 값을 설정하고 해당 값이 배치되어야 할 정확한 인덱스 위치를 얻음
print("\n요소가 삽입되어야 할 정확한 위치는?...\n", index.searchsorted(45))실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Pandas Index... Int64Index([10, 20, 30, 40, 50], dtype='int64') Number of elements in the index... 5 The exact positions where the element should be placed?... 4
결과 해석
인덱스 [10, 20, 30, 40, 50]는 오름차순으로 정렬되어 있습니다. 여기에 값 45를 삽입한다고 가정하면, 45는 40보다 크고 50보다 작기 때문에 네 번째 위치(인덱스 4)에 들어가야 합니다. 따라서 searchsorted(45)는 4를 반환합니다.
참고로 searchsorted() 메서드는 side 매개변수를 지원합니다. 기본값인 'left'는 같은 값을 만나면 그 앞 위치를 반환하고, 'right'로 설정하면 같은 값들의 뒤 위치를 반환합니다. 이를 활용하면 중복 값이 존재하는 경우에도 원하는 삽입 위치를 정확하게 제어할 수 있습니다.