[Python/데이터분석] 데이터프레임 구분자로 텍스트 분리 후 컬럼 생성하기

안녕하세요. 파이썬으로 데이터분석을 할 때, 한 컬럼의 텍스트를 구분자로 구분한 후, 새 컬럼들로 쪼개야 하는 작업이 필요할 때가 종종 있습니다. 단순 텍스트라면 .split(delimiter)을 사용하여 쉽게 list로 쪼갤 수 있는데, 데이터 프레임에서는 어떻게 해야 할까요?

데이터프레임 컬럼 구분자 이용하여 다중 컬럼으로 쪼개기

예시 데이터프레임 data를 만들어 보겠습니다. 해당 테이블은 제가 임의로 만들었구요, 루테인 플러스라는 영양제에 대한 정보를 담고 있습니다.

import pandas as pd

data = pd.DataFrame(columns = ['name', 'company', 'nutrient_content'])
data.loc[0] = ['루테인 플러스','건강바이오(주)', '비타민E | 12.5 | mg']
data.loc[1] = ['루테인 플러스','건강바이오(주)', '루테인 | 2.7 | mg']
data.loc[2] = ['루테인 플러스','건강바이오(주)', '엽산 | 20 | mg']

data.head()

namecompanynutrient_content
0루테인 플러스건강바이오(주)비타민E | 12.5 | mg
1루테인 플러스건강바이오(주)루테인 | 2.7 | g
2루테인 플러스건강바이오(주)엽산 | 20 | mg

보시는 것과 같이 nutrient_content 컬럼은

  • 영양소명
  • 함량
  • 단위

로 이루어져 있으며 ‘ | ‘로 구분되어 있습니다. 이제 이 nutrient_content 컬럼을 nutrient, content, unit 세 컬럼으로 쪼개어볼게요. 코드는 아래와 같습니다!

data[['nutrient', 'content', 'unit']] = data['nutrient_content'].str.split(' \| ', expand = True)

data.head()

namecompanynutrient_contentnutrientcontentunit
0루테인 플러스건강바이오(주)비타민E | 12.5 | mg비타민E12.5mg
1루테인 플러스건강바이오(주)루테인 | 2.7 | g루테인2.7g
2루테인 플러스건강바이오(주)엽산 | 20 | mg엽산20mg

그럼 이렇게 nutrient, content, unit 세 컬럼이 생성되며 각각의 내용이 값으로 들어온 것을 볼 수 있어요.

감사합니다 😊

Leave a Comment