Data Science/Pandas
Pandas. replace 와 map 의 차이
워로디스
2026. 11. 3. 22:43
Pandas에서 replace()와 map()은 둘 다 값을 다른 값으로 변환할 때 사용하지만, 가장 큰 차이는 매핑되지 않은 값의 처리 방식입니다.
1. 핵심 차이
| 구분 | replace() |
map() |
|---|---|---|
| 주요 목적 | 특정 값을 다른 값으로 치환 | 기존 값을 새로운 값으로 매핑 |
| 매핑되지 않은 값 | 원래 값 유지 | NaN으로 변경 |
| 딕셔너리 사용 | 가능 | 가능 |
| 함수(lambda) 사용 | 불가능 | 가능 |
| 정규표현식 | 지원 | 직접 지원하지 않음 |
| 주요 사용 대상 | Series, DataFrame | Series |
2. 예제로 비교
import pandas as pds = pd.Series(['A', 'B', 'C', 'D'])mapping = { 'A': 100, 'B': 200}
replace()
s.replace(mapping)
출력:
0 100
1 200
2 C
3 D
dtype: object
딕셔너리에 없는 C, D는 원래 값을 유지합니다.
map()
s.map(mapping)
출력:
0 100.0
1 200.0
2 NaN
3 NaN
dtype: float64
딕셔너리에 없는 C, D는 NaN으로 변경됩니다.
즉,
replace()→ 지정된 값만 변경map()→ 각 값을 매핑하고, 대응값이 없으면 결측치 처리
3. map()만 가능한 기능
map()은 함수를 전달할 수 있습니다.
s.map(lambda x: f'code_{x}')
결과:
0 code_A
1 code_B
2 code_C
3 code_D
dtype: str
반면 replace()는 이런 방식으로 함수를 전달할 수 없습니다.
4. map()에서 매핑되지 않은 값 유지하기
map()을 사용하면서도 기존 값을 유지하려면 fillna()를 활용할 수 있습니다.
s.map(mapping).fillna(s)
이렇게 하면 replace()와 유사하게 동작합니다.
5. 선택 기준
| 상황 | 추천 |
|---|---|
| '남' → 'M', '여' → 'F'처럼 일부 값만 변경 | replace() |
| 상품 코드 → 상품명 매핑 | map() |
| 매핑 테이블에 없는 값을 NaN으로 표시 | map() |
| 문자열 패턴을 정규표현식으로 치환 | replace() |
| 각 값에 lambda 함수 적용 | map() |
결론: 일부 값만 바꾸고 싶으면 replace(), 각 값을 매핑 규칙이나 함수에 따라 변환하고 싶으면 map()을 사용하면 됩니다.
참고로 map()에서 매핑되지 않은 값이 NaN이 되는 것은 일반 딕셔너리로 매핑할 때의 동작입니다.
반응형