판다스 Index 객체

1 minute read

1. Index 객체 추출하기

판다스의 Index 객체는 DataFrame과 Series의 레코드를 고유하게 식별하는 객체이며, RDBMS의 PK와 유사하지만 컬럼에 포함되지는 않기 때문에 연산에도 적용되지 않는다. Index 객체는 .index로 추출할 수 있다.

import pandas as pd
df = pd.DataFrame({'col1': [1, 2, 3], 'col2': [4, 5, 6]})
df.index
# RangeIndex(start=0, stop=3, step=1)
df['col1'].index
# RangeIndex(start=0, stop=3, step=1)

RangeIndex라는 이름으로 Index 객체가 추출된 것을 확인할 수 있다. 여기서 ndarray 형태로 실제 값을 확인하고 싶다면 values 속성을 사용한다.

df.index.values
# array([0, 1, 2], dtype=int64)
print(type(df.index.values))
# <class 'numpy.ndarray'>

2. Index 객체 인덱싱, 슬라이싱

1차원 array 형태인 Index 객체는 shape 확인, 인덱싱, 슬라이싱도 물론 가능하며, 한 번 만들어진 Index 객체를 변경할 수는 없다.

# shape 확인
print(df.index.values.shape) # (3,)
# 인덱싱
print(df.index.values[2]) # 2
# 슬라이싱
print(df.index.values[:2]) # [0 1]
print(df.index.values[2:]) # [2]

3. reset_index()

Index 객체의 값을 하나의 컬럼으로 사용하고 싶다면, reset_index() 메서드를 이용한다.

이 때, drop=True로 설정하면 기존 인덱스를 컬럼으로 추가하지 않고 인덱스만 리셋할 수 있으며, inplace=True로 설정하면 재할당 없이도 reset_index()를 적용한 결과가 기존 DataFrame에 반영되게 만들 수 있다.

defalut는 drop=False, inplace=False이다.

df.reset_index() # 기존 데이터프레임은 변화 없음
df.reset_index(inplace=True) # 기존 데이터프레임에 반영
# 위의 첫 번째 코드 실행 시에는 반환된 결과
# 위의 두 번째 코드 실행 시에는 기존 데이터프레임
   index  col1  col2
0      0     1     4
1      1     2     5
2      2     3     6

Leave a comment