본문 바로가기
코딩

[파이썬 코딩] 데이터프레임 하나의 컬럼을 여러 개로 나누기

by 명석한 쭌이 2024. 2. 12.

데이터 프레임 내 하나의 컬럼값을 두 개의 컬럼값으로 나눠보겠습니다..

그래서 어떻게 나눈다는 거지? 이해가 잘 안 가시는 분들은 아래 그림을 봐주세요.

아래처럼 도로명_주소명 컬럼을 주시도명과 시군구명으로 나눠보려는 것입니다.

 

import pandas as pd

df = pd.read_csv('/content/데이터.csv')
df.head()

사용 데이터: 공공데이터포털의 '전국전동휠체어급속충전기표준데이터' csv 파일

 

나누기 위해 쓸 명령어는 바로 split 명령어인데요.

아래와 같이 split(' ')을 준다는 것은  ' ' (공백)을 기준으로 안의 데이터를 쪼갠다는 겁니다.

아래의 아웃풋 결과를 보시는 것처럼 리스트 단위 내로 쪼개진 것을 확인하실 수 있습니다.

df['도로명_주소'].str.split(' ')

 

 

쪼개진 데이터에서 1행당 똑같은 위치에 있는 데이터를 가져오는 명령어가 필요합니다.

이때 쓸 수 있는 것이 apply lambda 함수입니다. x[0]을 통해 쪼개진 리스트의 1첫번째 값을 열 데이터마다 불러오게 합니다. 리스트 위치순번은 1이 아닌 0부터 시작한다는 점 기억해주세요!

 

x[0] : 첫 번째 위치한 주시도명을 불러오게 합니다.

x[1] : 두 번째 위치한 시군구명을 불러오게 합니다.

 

df['도로명_주소'].str.split(' ').apply(lambda x : x[0])

 

 

df['도로명_주소'].str.split(' ').apply(lambda x : x[1])

 

 

df['주시도명'] = df['도로명_주소'].str.split(' ').apply(lambda x : x[0])
df['시군구명'] = df['도로명_주소'].str.split(' ').apply(lambda x : x[1])

df.head()

 

 

'주시도명' 컬럼과 '시군구명' 컬럼이 뒤에 깔끔하게 추가되었습니다.

 

 

이대로 포스팅을 끝내진 좀 아쉬우니 상세주소도 추가해 보겠습니다.

이때에는 split명령어에 의해 쪼개진 값들을 다시 합쳐주는 역할인 join 명령어를 활용해 주면 됩니다.

df['상세주소'] = df['도로명_주소'].str.split(' ').apply(lambda x: ' '.join(x[2:]))

df.head()

 

'상세주소' 컬럼이 깔끔하게 추가되었습니다.

 

이번 포스팅에서 활용한 split 함수는 실무에서도 많이 활용하는 함수이니 익혀놓는 것이 좋습니다.

또한 데이터 전처리 후 검토작업을 꼭 해보시는 것을 추천합니다. 주시도명에 데이터가 제대로 들어갔는지? 시군구명에 주시도명이 잘못 들어가 있는 데이터가 있지는 않은지? 검토 작업을 실무자라면 반드시 해보시는 것을 추천합니다.