본문으로 건너뛰기
김신건의 로그

[Pandas] Index

· 수정 · 📖 약 1분 · 246자/단어 #python #pandas #index
Pandas Index, pandas.Index, 인덱스, RangeIndex, MultiIndex

정의

pandas.Index 는 행 / 열 라벨을 보관하는 객체. Pandas Series / Pandas DataFrame 의 모든 라벨은 Index. 정렬, 정합성, 빠른 lookup 의 기반.

기본은 RangeIndex (0, 1, 2, …) 지만 set_index 로 임의 열을 index 로 승격 가능.

종류

종류용도
RangeIndex기본 0-based 정수
Int64Index임의 정수
Index (object)문자열 / 혼합 타입
DatetimeIndex시계열
PeriodIndex기간 (2024-Q1)
TimedeltaIndex시간 차이
Pandas MultiIndex계층형 (multi-level)
CategoricalIndex범주형
IntervalIndex구간 (bin)

자주 쓰는 동작

set_index / reset_index

python
import pandas as pd
df = pd.DataFrame({'name': ['A', 'B', 'C'], 'age': [10, 20, 30]})
df2 = df.set_index('name')
print(df2)
print('---')
print(df2.reset_index())
결과
      age
name
A      10
B      20
C      30
---
name  age
0    A   10
1    B   20
2    C   30

정렬

df.sort_index()                # index 기준 정렬
df.sort_index(axis=1)          # 열 이름 기준 정렬
df.reindex(['c', 'a', 'b'])    # 명시적 재배치 (없으면 NaN)

이름 부여

df.index.name = 'id'
df.columns.name = 'feature'

정합성 자동 정렬

a = pd.Series([1, 2, 3], index=['x', 'y', 'z'])
b = pd.Series([10, 20], index=['y', 'z'])
print(a + b)
# x     NaN
# y    12.0
# z    23.0

연산 시 같은 index 끼리만 매칭. 없는 곳은 NaN.

고유성

기본 Index 는 중복 허용. 그러나 lookup 효율과 의미상 unique 권장.

df.index.is_unique     # True / False
df.index.duplicated()  # 중복 위치 boolean

MultiIndex (간단 소개)

df = pd.DataFrame(
    {'sales': [100, 200, 150, 300]},
    index=pd.MultiIndex.from_tuples(
        [('Q1', 'Seoul'), ('Q1', 'Busan'),
         ('Q2', 'Seoul'), ('Q2', 'Busan')],
        names=['quarter', 'city']
    )
)

자세한 내용은 Pandas MultiIndex 참고.

자주 만나는 함정

1. 정수 index 의 .loc

s = pd.Series([10, 20, 30], index=[5, 6, 7])
s.loc[5]      # label 5 → 10
s.iloc[5]     # IndexError (위치 5 없음)
s[5]          # label 5 → 10 (deprecated 경고 가능)

label 과 위치를 명확히 구분.

2. set_index 후 원본 컬럼 사라짐

df2 = df.set_index('name')
# df2 에는 'name' 컬럼이 없음, df2.index 가 'name'

원래대로 돌리려면 reset_index().

참고

이 글의 용어 (3개)
[Pandas] DataFramepandas
정의 은 2차원 레이블 테이블. 각 열이 , 모든 열이 같은 (행 라벨) 를 공유. SQL 테이블 / Excel 시트 / R data.frame 의 Python 대응체. 생성 <…
[Pandas] MultiIndexpandas
정의 MultiIndex 는 여러 단계 (level) 의 라벨로 구성된 . SQL 의 composite key 와 비슷, 그룹화된 데이터를 자연스럽게 표현. 생성 인덱싱 <Cod…
[Pandas] Seriespandas
정의 는 1차원 레이블 배열. NumPy + 의 결합. 의 한 열이 곧 Series. 핵심 속성 | 속성 | 의미 | |:---|:---| | | numpy array | | |…

💬 댓글

사이트 검색 / 명령어

검색

스크롤 = 확대/축소 · 드래그 = 이동 · 0 = 원래 크기 · ESC = 닫기