[Pandas] DataFrame ③ 인덱싱

Hunie_07·2026년 3월 9일

Pandas

목록 보기
8/12
post-thumbnail

📌 DataFrame 인덱싱

  • 열단위 인덱싱 [ ]
  • 인덱서(loc, iloc)를 사용하지 않는 행단위 인덱싱 [ : ]
  • 개별 요소 접근 [열][행]

1️⃣ 열 단위 인덱싱

  • 열 라벨(컬럼명)을 키값으로 생각하고 인덱싱
  • [ ]기호 또는 df.열이름을 이용
    • [ ] 는 열 위주 인덱싱이 원칙
  • 인덱스로 라벨값을 하나 넣으면 시리즈 객체가 반환
  • 라벨의 배열이나 리스트를 넣으면 부분적 df 가 반환

예시 데이터

data = {
    '2015': [9904312, 3448737, 2890451, 2466052],
    '2016': [9631482, 3393191, 2632035, 2000002],
    '2017': [9762546, 3512547, 2517680, 2456016],
    '2018': [9912345, 1513057, 2648043, 2504991]
}
df = pd.DataFrame(data, index=['서울','부산','인천','대구'])
df.columns.name = '연도'
df.index.name = '도시'
df['지역'] = ['수도권', '경상권', '경상권', '수도권']
df

- 출력


'2015' 열 출력

df['2015']

- 출력

도시
서울    9904312
부산    3448737
인천    2890451
대구    2466052
Name: 2015, dtype: int64

열(컬럼)이름이 문자열인 경우

  • 정수위치인덱스를 사용할 수 없다. KeyError 가 발생한다.
df_int = pd.DataFrame(np.arange(1, 10).reshape(3, 3))
df_int

- 출력

  • 위와 같은 데이터프레임의 경우는 인덱스가 기본값으로 부여되는 정수인덱스이기에 정수위치인덱스 사용이 가능하다.

0열 출력

df_int[0]

- 출력

0    1
1    4
2    7
Name: 0, dtype: int64

  • 컬럼명을 문자열로 변경하고 다시 시도하면 KeyError 가 발생한다.
df_int.columns = 'A B C'.split()
df_int

- 출력

df_int[0]

- 출력

KeyError: 0

열 값을 데이터프레임으로 출력

  • 열 인덱싱을 리스트 형태로 입력값을 주면 Series 가 아닌 DataFrame 형태로 출력된다.

일반 인덱싱

df['2015']

- 출력

도시
서울    9904312
부산    3448737
인천    2890451
대구    2466052
Name: 2015, dtype: int64

리스트 형태 인덱싱

df[['2015']]

- 출력


여러 열 출력

df[['2015', '2017']]

- 출력


열(컬럼)이름이 수치형인 경우

df_int.columns = range(3)
df_int[[0, 2]]

- 출력


2️⃣ 행 단위 인덱싱

  • 슬라이싱(slicing) 사용
    • 열단위 인덱싱과 구분하기 위해
    • 인덱스 값이 문자(label)인 경우 문자 슬라이싱
  • 인덱서(loc, iloc) 사용

  • 열 단위 인덱싱과는 달리 행 단위 인덱싱의 경우 인덱서를 사용하지 않는다면 슬라이싱을 사용해야 한다.
  • 슬라이싱을 사용하기 때문에 연속된 위치만 접근가능한 한계점이 있다.
df['서울': '서울']

- 출력


여러 행 출력

df[:'부산']

- 출력

행(인덱스)이름이 수치형인 경우

df_int[1:3]

- 출력


3️⃣ 개별 요소 접근

  • 각각의 요소에 접근하려면 df['열']['행'] 형태로 사용한다.
df['2015']['서울']

- 출력

np.int64(9904312)

df['서울':'서울']['2015']

- 출력

도시
서울    9904312
Name: 2015, dtype: int64

  • 리스트 형태로 열 인덱싱을 하는 경우 이 또한 데이터프레임 형태로 출력된다.
df[['2015', '2017']]['서울': '서울']

- 출력

0개의 댓글