상세 컨텐츠

본문 제목

[Pandas] Pandas reindex() 메서드 사용법 정리

데이터 분석

by Corn/sec 2025. 5. 30. 15:22

본문

Pandas에서는 DataFrame이나 Series 객체의 인덱스를 새롭게 정의하거나 순서를 변경하고자 할 때 reindex() 메서드를 사용합니다. 이 메서드는 데이터를 새 인덱스 구조에 맞게 재배열하거나, 기존에 없던 인덱스를 추가하여 결측값을 채우는 데에 유용합니다.


1. 개요

reindex()는 다음과 같은 상황에서 활용할 수 있습니다:

  • 기존 인덱스의 순서를 사용자가 지정한 대로 변경하고 싶을 때
  • 누락된 인덱스를 추가하고 해당 항목을 NaN으로 채우고 싶을 때
  • 특정 인덱스만 유지하고 나머지는 제거하고자 할 때

2. 기본 예제

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
Charlie 95.0
a Alice 85.0
b Bob 90.0
d NaN NaN

 

  • ['c', 'a', 'b', 'd'] 순서로 인덱스를 새롭게 지정하면, 기존의 데이터가 그 순서대로 재배열됩니다.
  • 존재하지 않던 'd' 인덱스는 NaN으로 채워집니다.

3. 일부 인덱스만 지정한 경우

df.reindex(['a', 'c'])
  • 해당 코드는 'a'와 'c' 인덱스만 유지하며, 존재하던 'b'는 제거됩니다.

4. 인덱스를 생략한 경우

df.reindex()
  • 인덱스를 명시하지 않고 reindex()를 호출하면 아무런 변화도 일어나지 않습니다. 새로운 인덱스 정보가 없기 때문에 원본 DataFrame이 그대로 반환됩니다.

5. 추가 옵션

reindex() 메서드는 다음과 같은 인자를 함께 사용할 수 있습니다:

  • fill_value: 새롭게 추가된 인덱스에 대해 결측값 대신 특정 값을 채움
  • method: 시계열 데이터에 대해 'ffill'(앞의 값으로 채우기), 'bfill'(뒤의 값으로 채우기) 등의 보간 방법 지정 가능
  • df.reindex(['a', 'b', 'c', 'd'], fill_value=0)

6. 관련 메서드와의 비교

reindex()와 비슷한 기능을 제공하는 다른 메서드들과의 차이점은 다음과 같습니다.

메서드 설명 사용 목적
reindex() 사용자가 지정한 인덱스 순서에 맞춰 데이터를 재배열 순서를 직접 지정하거나, 새로운 인덱스를 추가할 때
sort_index() 인덱스를 기준으로 정렬 (기본은 오름차순) 인덱스 순서대로 정렬하고 싶을 때
reset_index() 기존 인덱스를 열로 이동시키고 기본 숫자 인덱스로 초기화  

 

> 예시

df.sort_index()         # 인덱스를 기준으로 정렬
df.reset_index()        # 인덱스를 열로 이동하고 0부터 다시 인덱싱

 


7. 결론

Pandas의 reindex() 메서드는 인덱스를 직접 지정하여 데이터 구조를 유연하게 재구성할 수 있는 강력한 도구입니다. 단순한 정렬을 원할 경우에는 sort_index(), 인덱스를 초기화하고 싶을 경우에는 reset_index()와 함께 사용하시면 목적에 따라 보다 효율적으로 데이터를 다루실 수 있습니다.

데이터를 원하는 인덱스 구조로 재정렬하거나, 누락된 항목을 포함해 전체 구조를 통일하고자 하신다면 reindex()를 적극적으로 활용해 보시기 바랍니다.