Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python Pandas – DataFrame 열의 문자열에서 숫자 제거하기

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)를 의미합니다.
  • '': 매칭된 숫자를 빈 문자열로 대체하여 결과적으로 제거합니다.

이 방법을 응용하면 특수문자 제거, 공백 정리 등 다양한 문자열 전처리 작업에도 동일한 패턴으로 활용할 수 있습니다.