Skip to content

pandas DataFrame에서 문자열 칼럼 다루기

pandas로 문자열 칼럼을 쉽게 다루는 방법


데이터 준비

pandas로 데이터를 전처리하다보면 문자열 칼럼을 처리할 일이 종종 있다. 이 때 유용한 메서드들이 있어 정리해둔다.

import pydataset as pds

df = pds.data('iris')
df = df[['Species']]

문자열 슬라이싱

문자열 칼럼을 슬라이싱 하는 방법은 아래와 같다.

df['test'] = df['Species'].str.slice(start=1, stop=5)

print(df.head())
  Species  test
1  setosa  etos
2  setosa  etos
3  setosa  etos
4  setosa  etos
5  setosa  etos

df['test'] = df['Species'].str.slice(step=2)

print(df.head())
  Species test
1  setosa  sts
2  setosa  sts
3  setosa  sts
4  setosa  sts
5  setosa  sts

문자열 split

특정 문자를 기준으로 split하는 방법은 아래와 같다.

df['test'] = df['Species'].str.split('o')

print(df.head())
  Species       test
1  setosa  [set, sa]
2  setosa  [set, sa]
3  setosa  [set, sa]
4  setosa  [set, sa]
5  setosa  [set, sa]

응용

위 메서드들을 응용하면, 칼럼에 배열이 들어있는 형태의 칼럼을 처리해주는 함수를 아래와 같이 만들 수 있다. 일정한 길이의 배열에 담은 센서 데이터를 한 칼럼에 저장한 형태의 데이터를 일괄적으로 전처리하기 위해 만들어 보았다.

import pandas as pd


def df_text_split(df: pd.DataFrame, col_name: list[str], target: str, sep: str = ','):
    df_sep = pd.DataFrame(df[target].str.split(sep).tolist(), columns=col_name)
    df.drop(columns=target, inplace=True)
    return pd.concat(objs=[df, df_sep], axis=1)