Pandas에서 인덱스(Index) 값을 정렬하면서, 동시에 그 정렬 결과를 만들어내는 인덱스 위치 배열까지 함께 얻고 싶다면 index.sort_values() 메서드를 사용하면 됩니다. 이때 return_indexer 매개변수를 True로 설정하면, 정렬된 인덱스와 함께 정렬에 사용된 위치 정보가 튜플 형태로 반환됩니다.
기본 사용법
먼저 필요한 라이브러리를 임포트합니다 −
import pandas as pd
Pandas 인덱스를 생성합니다 −
index = pd.Index([50, 10, 70, 95, 110, 90, 30])
생성한 Pandas 인덱스를 출력합니다 −
print("Pandas Index...\n",index)인덱스 값을 정렬합니다. 기본적으로 오름차순으로 정렬되며, "return_indexer" 매개변수를 True로 설정하면 정렬에 사용된 인덱스 위치 배열도 함께 반환됩니다 −
print("\nSort and also return the indices that would sort the index...\n",index.sort_values(return_indexer=True))예제
전체 코드는 다음과 같습니다 −
import pandas as pd
# Pandas 인덱스 생성
index = pd.Index([50, 10, 70, 95, 110, 90, 30])
# Pandas 인덱스 출력
print("Pandas Index...\n",index)
# 인덱스의 요소 개수 확인
print("\nNumber of elements in the index...\n",index.size)
# 인덱스 값 정렬
# 기본적으로 오름차순으로 정렬됨
# "return_indexer" 매개변수를 True로 설정하여 정렬에 사용된 인덱스도 함께 반환
print("\nSort and also return the indices that would sort the index...\n",index.sort_values(return_indexer=True))출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다 −
Pandas Index... Int64Index([50, 10, 70, 95, 110, 90, 30], dtype='int64') Number of elements in the index... 7 Sort and also return the indices that would sort the index... (Int64Index([10, 30, 50, 70, 90, 95, 110], dtype='int64'), array([1, 6, 0, 2, 5, 3, 4], dtype=int64))
결과 해석
실행 결과를 살펴보면, 첫 번째 반환값은 원래 인덱스 [50, 10, 70, 95, 110, 90, 30]가 오름차순으로 정렬된 [10, 30, 50, 70, 90, 95, 110]입니다. 두 번째 반환값인 array([1, 6, 0, 2, 5, 3, 4])는 정렬된 순서대로 각 요소가 원래 인덱스에서 어느 위치(0부터 시작)에 있었는지를 나타냅니다. 예를 들어, 정렬 후 첫 번째 값인 10은 원래 인덱스의 1번 위치에, 마지막 값인 110은 4번 위치에 있었음을 알 수 있습니다. 이처럼 return_indexer=True 옵션은 데이터를 재정렬하거나 정렬 순서를 다른 배열에 적용할 때 매우 유용하게 활용됩니다.