Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬에서 구분자를 기준으로 문자열을 나누고 판다스 시리즈로 변환하는 함수 작성하기

문제 개요

하나의 문자열을 특정 구분자(delimiter)를 기준으로 분할한 뒤, 그 결과를 판다스(pandas)의 시리즈(Series) 객체로 변환하면 아래와 같은 형태의 결과를 얻을 수 있습니다.

0     apple
1     orange
2     mango
3     kiwi

이번 글에서는 이 문제를 해결하는 두 가지 방법을 단계별로 살펴보겠습니다.

해결 방법 1: 사용자 정의 함수 활용

  • split_str() 함수를 정의하고, 문자열(s)과 구분자(d) 두 개의 인자를 받도록 합니다.

  • 함수 내부에서 s.split(d)를 호출해 분할된 데이터를 split_data 변수에 저장합니다.

split_data = s.split(d)
  • split_data를 pd.Series()에 전달하여 시리즈 데이터로 변환합니다.

pd.Series(split_data)
  • 마지막으로 함수를 호출해 최종 결과를 출력합니다.

예제 코드

아래 코드를 통해 동작 과정을 더 쉽게 이해할 수 있습니다.

import pandas as pd

def split_str(s, d):
    split_data = s.split(d)
    print(pd.Series(split_data))

split_str('apple\torange\tmango\tkiwi', '\t')

실행 결과

0     apple
1     orange
2     mango
3     kiwi
dtype: object

해결 방법 2: 람다(lambda) 함수 활용

  • 분할할 문자열을 정의하여 data 변수에 할당합니다.

data = 'apple\torange\tmango\tkiwi'
  • 사용할 구분자를 delimiter 변수에 설정합니다.

delimiter = '\t'
  • 문자열(x)과 구분자(y)를 인자로 받아 x.split(y)를 수행하는 람다 함수를 만들어 split_data에 저장합니다.

split_data = lambda x, y: x.split(y)
  • data와 delimiter 값을 인자로 함수를 호출하고, 그 결과를 result 리스트에 저장합니다.

result = split_data(data, delimiter)
  • result 리스트를 pd.Series()로 변환하여 시리즈를 생성합니다.

예제 코드

아래 전체 코드를 실행하면 방법 1과 동일한 결과를 확인할 수 있습니다.

import pandas as pd

data = 'apple\torange\tmango\tkiwi'
delimiter = '\t'
split_data = lambda x, y: x.split(y)
result = split_data(data, delimiter)
print(pd.Series(result))

실행 결과

0     apple
1     orange
2     mango
3     kiwi
dtype: object

정리

두 방법 모두 파이썬 내장 str.split() 메서드를 활용해 문자열을 분할하고, 그 결과를 pd.Series()로 감싸 시리즈로 변환한다는 점은 동일합니다. 다만 방법 1은 def 키워드로 명명 함수를 정의하므로 재사용성과 가독성이 좋고, 방법 2는 람다 표현식을 사용해 한 줄로 간결하게 처리할 수 있다는 차이가 있습니다. 같은 로직이 여러 곳에서 반복적으로 필요하다면 방법 1처럼 함수로 정의해 두는 것이 유지보수 측면에서 더 유리합니다.