DataFrame에서 데이터를 선택하는 두 핵심 도구가 「loc」(라벨 기반)과 「iloc」(정수 위치 기반)입니다.
처음에는 헷갈리지만 둘의 차이를 알면 모든 인덱싱이 명확해집니다.
loc — 라벨로 선택.
df.loc[0] — 인덱스가 0인 행.
df.loc[:, "name"] — 「name」 열 전체.
df.loc[0:2, ["name", "age"]] — 0~2행(2 포함!)의 name·age 열.
라벨 슬라이싱은 끝을 포함합니다.
iloc — 정수 위치로 선택.
df.iloc[0] — 첫 번째 행.
df.iloc[:, 0] — 첫 번째 열.
df.iloc[0:2, [0, 1]] — 0~1행(2 미포함)의 0·1 열.
위치 슬라이싱은 끝을 미포함(파이썬 표준).
왜 둘 다 있는가?
인덱스가 정수가 아닐 때(문자열·날짜) 헷갈림 방지를 위함입니다.
df의 인덱스가 ["a", "b", "c"]라면 df.loc["a"]는 명확하지만 df[0]은 모호.
iloc은 「항상 정수 위치」, loc은 「항상 라벨」이라는 명확한 구분이 안전합니다.
단일 열 선택의 단축.
df["name"] — Series 반환.
df[["name", "age"]] — DataFrame 반환.
가장 자주 쓰는 패턴이라 단축 문법이 따로 있습니다.
행 필터링은 df[df["age"] > 25]처럼 불리언 인덱싱이 표준.
한 줄 요약
DataFrame 인덱싱은 loc(라벨 기반, 끝 포함)과 iloc(정수 위치, 끝 미포함)이 두 축입니다.
df["name"]은 단일 열 단축이고, 행 필터링은 불리언 인덱싱으로 합니다.
더 알아볼 것
- at·iat — loc·iloc의 단일 셀 버전
- Multi-Index 다루기
- SettingWithCopyWarning의 의미