728x90
[Pandas] 컬럼 데이터 값 분리하기 (str.split, str.get)
pandas에서 컬럼의 데이터 값을 분리해서 새로운 컬럼으로 추가하고 싶을때,
str.split과 str.get을 사용하면 분리 후 컬럼 추가가 가능하다.
컬럼 값 분리하기
테스트 하기 위한 임의 데이터 프레임을 생성해준다.
import pandas as pd
start_date = pd.to_datetime('2023-01-01')
end_date = pd.to_datetime('2023-12-31')
dates = pd.date_range(start_date, end_date, freq='M')
df = pd.DataFrame({"date":dates})
df['date'] = pd.to_datetime(df['date']).dt.date
이 상태에서 date 컬럼을 분리를 하려고해도, date 컬럼의 dtype이 datetime이기 때문에 오류가 발생한다.
df.dtypes
df.astype을 통해 str로 변경 후 진행한다.
df = df.astype({"date": "str"})
타입이 변경된 date 컬럼을 년-월-일 컬럼으로 각각 분리하고싶다고 할때,
str.split을 사용해서 분리가 가능하다. 분리가 된 데이터 리스트는 시리즈 형태로 저장된다.
date_list = df['date'].str.split('-')
분리 된 컬럼 값 추가하기
분리 된 컬럼 값을 추가하는 방법엔 2가지가 있다.
1. str.get() 이용하기
분할된 데이터 리스트의 인덱스를 str.get 함수로 가져와 데이터프레임에 추가한다.
df['year'] = date_list.str.get(0)
df['month'] = date_list.str.get(1)
df['day'] = date_list.str.get(2)
컬럼을 원하는 위치에 추가하고 싶을 땐, insert를 사용하면 된다.
df.insert(0, 'year', date_list.str.get(0))
df.insert(1, 'month', date_list.str.get(1))
df.insert(2, 'day', date_list.str.get(2))
2. expand=True 옵션 사용하기
두번째 방법은 str.split의 expand=True 옵션을 사용하는 것이다.
옵션을 사용하면 분리된 데이터가 시리즈가 아닌 데이터프레임으로 생성된다.
date_df = df['date'].str.split('-', expand=True)
생성된 데이터프레임에 컬럼명을 추가해준다.
date_df.columns = ['year','month','day']
기존 데이터 프레임에 추가하고 싶다면, concat을 이용하여 기존 데이터 프레임과 병합한다.
df = pd.concat([df, date_df], axis=1)
참고
반응형
'👩💻 Develope > Python' 카테고리의 다른 글
[Python] TypeError: 'str' object does not support item assignment (0) | 2023.12.27 |
---|---|
[Pandas] 컬럼 데이터 값 합치기 (0) | 2023.12.26 |
[Pandas] group by 했을 때 key외의 다른 컬럼 나오게하기 (1) | 2023.12.20 |
[Pandas] 데이터 프레임 날짜 다루기 (0) | 2023.12.19 |
[Python] Yaml 파일 불러오기 (0) | 2023.12.14 |