Pandas DataFrame의 문자열 데이터에서 숫자를 제거하려면 replace() 메서드를 활용하면 됩니다. 정규 표현식과 함께 사용하면 문자열에 포함된 모든 숫자를 손쉽게 삭제할 수 있습니다.
먼저 필요한 라이브러리를 임포트합니다.
import pandas as pd
1. 샘플 DataFrame 생성
학생 기록이 담긴 DataFrame을 생성합니다. 여기서 Id 열은 'S01', 'S02'처럼 숫자가 포함된 문자열을 가지고 있습니다.
dataFrame = pd.DataFrame(
{
"Id": ['S01','S02','S03','S04','S05','S06','S07'],
"Name": ['Jack', 'Robin', 'Ted', 'Robin', 'Scarlett', 'Kat', 'Ted'],
"Result": ['Pass', 'Fail', 'Pass', 'Fail', 'Pass', 'Pass', 'Pass']
}
)2. 특정 열에서 숫자 제거
이번 예제에서는 Id 열의 문자열에서 숫자를 제거합니다. .str.replace()에 정규 표현식 '\d+'(하나 이상의 연속된 숫자)를 지정하고 빈 문자열 ''로 치환하면 숫자가 모두 사라집니다.
dataFrame['Id'] = dataFrame['Id'].str.replace('\d+', '', regex=True)참고: Pandas 2.0 이상 버전에서는 정규 표현식을 사용할 때 regex=True 옵션을 명시적으로 지정하는 것이 권장됩니다. 이전 버전에서는 기본값으로 동작했지만, 최신 버전에서는 경고가 발생할 수 있습니다.
전체 예제 코드
다음은 위 과정을 하나로 합친 전체 코드입니다.
import pandas as pd
# 학생 기록이 담긴 DataFrame 생성
dataFrame = pd.DataFrame(
{
"Id": ['S01','S02','S03','S04','S05','S06','S07'],
"Name": ['Jack', 'Robin', 'Ted', 'Robin', 'Scarlett', 'Kat', 'Ted'],
"Result": ['Pass', 'Fail', 'Pass', 'Fail', 'Pass', 'Pass', 'Pass']
}
)
print("DataFrame ...\n", dataFrame)
# Id 열의 문자열에서 숫자 제거
dataFrame['Id'] = dataFrame['Id'].str.replace('\d+', '', regex=True)
print("\nUpdated DataFrame...\n", dataFrame)실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
DataFrame ...
Id Name Result
0 S01 Jack Pass
1 S02 Robin Fail
2 S03 Ted Pass
3 S04 Robin Fail
4 S05 Scarlett Pass
5 S06 Kat Pass
6 S07 Ted Pass
Updated DataFrame...
Id Name Result
0 S Jack Pass
1 S Robin Fail
2 S Ted Pass
3 S Robin Fail
4 S Scarlett Pass
5 S Kat Pass
6 S Ted Pass동작 원리 정리
.str.replace(): Pandas Series의 각 문자열 요소에 치환 작업을 적용하는 벡터화 메서드입니다.'\d+': 정규 표현식으로, 연속된 하나 이상의 숫자(0~9)를 의미합니다.'': 매칭된 숫자를 빈 문자열로 대체하여 결과적으로 제거합니다.
이 방법을 응용하면 특수문자 제거, 공백 정리 등 다양한 문자열 전처리 작업에도 동일한 패턴으로 활용할 수 있습니다.