개요

판다스에서 문자열 관련 함수를 사용하거나 전처리를 하기 위해서는 함수 및 명령어 앞에 str을 붙여주어야 한다.

예제로는 행정표준관리시스템에서 제공하는 전국 법정동명 및 코드 데이터를 사용했다.

import pandas as pd
df = pd.read_csv(my_dir + "법정동코드", sep='\\t', encoding='cp949')
df = df[df['폐지여부']=="존재"]
df.head()
법정동코드 법정동명 폐지여부
0 1100000000 서울특별시 존재
1 1111000000 서울특별시 종로구 존재
2 1111010100 서울특별시 종로구 청운동 존재
3 1111010200 서울특별시 종로구 신교동 존재
4 1111010300 서울특별시 종로구 궁정동 존재

1. 인덱싱 .str[]

# 앞 5자리까지만 추출
df['법정동명'].str[:5].head()

0    서울특별시
1    서울특별시
2    서울특별시
3    서울특별시
4    서울특별시
Name: 법정동명, dtype: object

# 마지막 한글자만 추출
df['법정동명'].str[-1].head()

0    시
1    구
2    동
3    동
4    동
Name: 법정동명, dtype: object

2. 분할 .str.split()

# 공백(" ")으로 분리
df['법정동명'].str.split(" ").head()

0              [서울특별시]
1         [서울특별시, 종로구]
2    [서울특별시, 종로구, 청운동]
3    [서울특별시, 종로구, 신교동]
4    [서울특별시, 종로구, 궁정동]
Name: 법정동명, dtype: object

이렇게 분할된 개별 리스트를 바로 데이터 프레임으로 만드려면, expand=True옵션을 추가한다.

df['법정동명'].str.split(" ", expand=True).head()
0 1 2 3 4
0 서울특별시 None None None None
1 서울특별시 종로구 None None None
2 서울특별시 종로구 청운동 None None
3 서울특별시 종로구 신교동 None None
4 서울특별시 종로구 궁정동 None None

3. 시작글자 인식 .str.startswith()

이는 특정 boolean을 반환하는데, 특정 글자로 시작하면 True, 아니면 False 반환

df['법정동명'].str.startswith("서울").head()

0    True
1    True
2    True
3    True
4    True
Name: 법정동명, dtype: bool

# 서울로 시작하는 데이터만 필터링
df[df['법정동명'].str.startswith("서울")].head()
법정동코드 법정동명 폐지여부
0 1100000000 서울특별시 존재
1 1111000000 서울특별시 종로구 존재
2 1111010100 서울특별시 종로구 청운동 존재
3 1111010200 서울특별시 종로구 신교동 존재
4 1111010300 서울특별시 종로구 궁정동 존재

4. 끝글자 인식 .str.endswith()

# 동으로 끝나는 데이터만 필터링
df[df['법정동명'].str.endswith("동")].head()
법정동코드 법정동명 폐지여부
2 1111010100 서울특별시 종로구 청운동 존재
3 1111010200 서울특별시 종로구 신교동 존재
4 1111010300 서울특별시 종로구 궁정동 존재
5 1111010400 서울특별시 종로구 효자동 존재
6 1111010500 서울특별시 종로구 창성동 존재