Pandas에서는 DataFrame이나 Series 객체의 인덱스를 새롭게 정의하거나 순서를 변경하고자 할 때 reindex() 메서드를 사용합니다. 이 메서드는 데이터를 새 인덱스 구조에 맞게 재배열하거나, 기존에 없던 인덱스를 추가하여 결측값을 채우는 데에 유용합니다.
reindex()는 다음과 같은 상황에서 활용할 수 있습니다:
NaN으로 채우고 싶을 때import pandas as pd
df = pd.DataFrame({
'name': ['Alice', 'Bob', 'Charlie'],
'score': [85, 90, 95]
}, index=['a', 'b', 'c'])
df_reindexed = df.reindex(['c', 'a', 'b', 'd'])
print(df_reindexed)
출력 결과:
| name | score | |
| c | Charlie | 95.0 |
| a | Alice | 85.0 |
| b | Bob | 90.0 |
| d | NaN | NaN |
['c', 'a', 'b', 'd'] 순서로 인덱스를 새롭게 지정하면, 기존의 데이터가 그 순서대로 재배열됩니다.'d' 인덱스는 NaN으로 채워집니다.df.reindex(['a', 'c'])
df.reindex()
reindex() 메서드는 다음과 같은 인자를 함께 사용할 수 있습니다:
fill_value: 새롭게 추가된 인덱스에 대해 결측값 대신 특정 값을 채움method: 시계열 데이터에 대해 'ffill'(앞의 값으로 채우기), 'bfill'(뒤의 값으로 채우기) 등의 보간 방법 지정 가능reindex()와 비슷한 기능을 제공하는 다른 메서드들과의 차이점은 다음과 같습니다.
| 메서드 | 설명 | 사용 목적 |
| reindex() | 사용자가 지정한 인덱스 순서에 맞춰 데이터를 재배열 | 순서를 직접 지정하거나, 새로운 인덱스를 추가할 때 |
| sort_index() | 인덱스를 기준으로 정렬 (기본은 오름차순) | 인덱스 순서대로 정렬하고 싶을 때 |
| reset_index() | 기존 인덱스를 열로 이동시키고 기본 숫자 인덱스로 초기화 |
> 예시
df.sort_index() # 인덱스를 기준으로 정렬
df.reset_index() # 인덱스를 열로 이동하고 0부터 다시 인덱싱
Pandas의 reindex() 메서드는 인덱스를 직접 지정하여 데이터 구조를 유연하게 재구성할 수 있는 강력한 도구입니다. 단순한 정렬을 원할 경우에는 sort_index(), 인덱스를 초기화하고 싶을 경우에는 reset_index()와 함께 사용하시면 목적에 따라 보다 효율적으로 데이터를 다루실 수 있습니다.
데이터를 원하는 인덱스 구조로 재정렬하거나, 누락된 항목을 포함해 전체 구조를 통일하고자 하신다면 reindex()를 적극적으로 활용해 보시기 바랍니다.