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

Python Pandas Index에서 정렬 순서를 유지하며 요소를 삽입할 위치 찾기 - searchsorted() 활용법

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'로 설정하면 같은 값들의 뒤 위치를 반환합니다. 이를 활용하면 중복 값이 존재하는 경우에도 원하는 삽입 위치를 정확하게 제어할 수 있습니다.