DataFrame의 특정 열에 접근할 때 보통 row['col_name']을 사용하지만, 전처리 과정이나 외부 데이터 병합 이후 컬럼이 조건부로 생성될 수 있는 경우에는 get()이 훨씬 안전할 수 있습니다. 이번 글에서는 .get()을 사용하는 방법과 장단점을 정리해보았습니다.
함수 설명
Series.get(key, default)메서드는 존재하지 않는 키(열 이름)에 접근할 경우 오류를 발생시키지 않고, 대신 기본값(default)을 반환하는 안전한 접근 방식입니다.
예시 코드
import pandas as pd
# 예제 데이터
df = pd.DataFrame({
'name': ['홍길동', '이몽룡', '성춘향'],
'age': [25, 27, 22]
})
# 존재하지 않는 컬럼을 조회할 때
for _, row in df.iterrows():
try:
print(row['address']) # KeyError 발생
except KeyError:
print('KeyError 발생!')
# 안전하게 접근
for _, row in df.iterrows():
print(row.get('address', '주소 없음'))
KeyError 발생!
KeyError 발생!
KeyError 발생!
주소 없음
주소 없음
주소 없음
- row['address'] → 존재하지 않는 컬럼이면 KeyError
- row.get('address', '주소 없음') → 기본값 '주소 없음'을 반환
즉, get()을 쓰면 예상치 못한 컬럼 누락에도 코드가 멈추지 않고 기본값으로 처리할 수 있습니다.
장단점 비교
✅ 장점
- 예외 처리 불필요: 존재하지 않는 컬럼에 접근하더라도 오류 발생 X
- 기본값 설정 가능: 결측 컬럼에 대한 기본값을 쉽게 지정 가능해 전처리 유용
⚠️ 단점
- 성능 저하 가능성: 내부적으로 추가적인 확인 과정을 거치므로, 대규모 데이터 반복 시 성능 차이 가능성 有
- 명시적 에러 감지 불가: 잘못된 컬럼명을 실수로 입력해도 오류가 발생하지 않아 디버깅 시 문제 발견 어려움
- 일부 Pandas 객체에서 미지원: 특정 상황(예: itertuples())에서는 .get() 메서드 사용 불가
정리
- 정상적인 컬럼 존재를 보장할 때는 row[key]
- 컬럼 존재가 불확실할 때는 row.get(key, default)
을 사용하는 것이 좋습니다.