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이 되는 것은 일반 딕셔너리로 매핑할 때의 동작입니다.

반응형