안녕하세요. 파이썬으로 데이터분석을 할 때, 한 컬럼의 텍스트를 구분자로 구분한 후, 새 컬럼들로 쪼개야 하는 작업이 필요할 때가 종종 있습니다. 단순 텍스트라면 .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()
name | company | nutrient_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()
name | company | nutrient_content | nutrient | content | unit | |
---|---|---|---|---|---|---|
0 | 루테인 플러스 | 건강바이오(주) | 비타민E | 12.5 | mg | 비타민E | 12.5 | mg |
1 | 루테인 플러스 | 건강바이오(주) | 루테인 | 2.7 | g | 루테인 | 2.7 | g |
2 | 루테인 플러스 | 건강바이오(주) | 엽산 | 20 | mg | 엽산 | 20 | mg |
그럼 이렇게 nutrient
, content
, unit
세 컬럼이 생성되며 각각의 내용이 값으로 들어온 것을 볼 수 있어요.
감사합니다 😊