Pandas를 사용하여 데이터프레임 문자열 열을 두 개의 열로 분할하는 방법
str.split() 방법 사용
가장 간단한 방법 중 하나는 str.split()
방법을 사용하는 것입니다. 이 방법은 문자열을 지정된 구분자를 기준으로 하여 서브스트링 목록으로 분할합니다. 분할된 문자열을 새로운 열로 만들 수 있습니다. 다음은 예입니다.
import pandas as pd
# 데이터 생성
df = pd.DataFrame({'문자열 열': ['이름 성1 성2', '이름2 성3', '이름3 성4']})
# 문자열 열을 공백을 기준으로 분할하여 새로운 열 생성
df[['이름', '성']] = df['문자열 열'].str.split(' ', expand=True)
# 결과 출력
print(df)
문자열 열 이름 성
0 이름 성1 성2 이름 성1 성2
1 이름2 성3 이름2 성3
2 이름3 성4 이름3 성4
regular expressions 사용
문자열 열을 분할하는 데 정규 표현식을 사용할 수도 있습니다. 이 방법은 더 복잡한 분할 작업에 유용할 수 있습니다. 다음은 예입니다.
import pandas as pd
# 데이터 생성
df = pd.DataFrame({'문자열 열': ['이름_성1_성2', '이름2_성3', '이름3_성4']})
# 정규 표현식을 사용하여 문자열 열을 분할하여 새로운 열 생성
df[['이름', '성']] = df['문자열 열'].str.rsplit('_', 1, expand=True)
# 결과 출력
print(df)
문자열 열 이름 성
0 이름_성1_성2 이름_성1 성2
1 이름2_성3 이름2 성3
2 이름3_성4 이름3 성4
apply() 방법 사용
apply()
방법을 사용하여 사용자 정의 함수를 각 문자열 값에 적용할 수도 있습니다. 이 방법은 분할 로직이 더 복잡하거나 다른 작업을 수행해야 하는 경우에 유용할 수 있습니다. 다음은 예입니다.
import pandas as pd
# 데이터 생성
df = pd.DataFrame({'문자열 열': ['이름 성1, 성2', '이름2, 성3', '이름3 성4']})
# 사용자 정의 함수를 사용하여 문자열 열 분할
def split_func(value):
names = value.split(', ')
return names[0], names[1]
# apply()를 사용하여 새로운 열 생성
df[['이름', '성']] = df['문자열 열'].apply(split_func)
# 결과 출력
print(df)
문자열 열 이름 성
0 이름 성1, 성2 이름 성1 성2
1 이름2, 성3 이름2 성3
2 이름3 성4 이름3 성4
import pandas as pd
# 데이터 생성
df = pd.DataFrame({'문자열 열': ['이름 성1 성2', '이름2 성3', '이름3 성4', '이름5 성6 성7']})
# 방법 1: str.split() 사용
df[['이름', '성']] = df['문자열 열'].str.split(' ', expand=True)
print(df)
# 방법 2: regular expressions 사용
df[['이름', '성']] = df['문자열 열'].str.rsplit('_', 1, expand=True)
print(df)
# 방법 3: apply() 사용
def split_func(value):
names = value.split(', ')
return names[0], names[1]
df[['이름', '성']] = df['문자열 열'].apply(split_func)
print(df)
- 방법 1:
str.split()
방법은 공백을 기준으로 문자열 열을 분할합니다. - 방법 2:
regular expressions
는_
를 기준으로 문자열 열을 분할합니다. - 방법 3:
apply()
방법은 사용자 정의 함수를 사용하여 문자열 열을 분할합니다.
사용하는 방법은 특정 요구 사항에 따라 다릅니다.
추가 정보
데이터프레임 문자열 열을 두 개의 열로 분할하는 대체 방법
Series.str.extract() 방법 사용
Series.str.extract()
방법은 문자열 열에서 일치하는 패턴을 추출하는 데 사용할 수 있습니다. 이 방법을 사용하여 분할하려는 패턴과 일치하는 서브스트링을 포함하는 두 개의 새로운 열을 만들 수 있습니다. 다음은 예입니다.
import pandas as pd
# 데이터 생성
df = pd.DataFrame({'문자열 열': ['이름_성1_성2', '이름2_성3', '이름3_성4']})
# 문자열 열에서 이름과 성을 추출하여 새로운 열 생성
df[['이름', '성']] = df['문자열 열'].str.extract('([^\d_]+)_([^\d_]+)', expand=True)
# 결과 출력
print(df)
문자열 열 이름 성
0 이름_성1_성2 이름_성1 성2
1 이름2_성3 이름2 성3
2 이름3_성4 이름3 성4
numpy.vectorize() 함수 사용
import pandas as pd
import numpy as np
# 데이터 생성
df = pd.DataFrame({'문자열 열': ['이름 성1, 성2', '이름2, 성3', '이름3 성4']})
# 사용자 정의 함수를 벡터화하여 문자열 열 분할
def split_func(value):
names = value.split(', ')
return names[0], names[1]
split_vec = np.vectorize(split_func)
# apply()를 사용하여 새로운 열 생성
df[['이름', '성']] = split_vec(df['문자열 열'])
# 결과 출력
print(df)
문자열 열 이름 성
0 이름 성1, 성2 이름 성1 성2
1 이름2, 성3 이름2 성3
2 이름3 성4 이름3 성4
Chained indexing 사용
다음과 같은 연쇄 인덱싱을 사용하여 문자열 열을 두 개의 열로 분할할 수도 있습니다.
import pandas as pd
# 데이터 생성
df = pd.DataFrame({'문자열 열': ['이름 성1 성2', '이름2 성3', '이름3 성4']})
# 문자열 열을 슬라이싱하여 새로운 열 생성
df[['이름', '성']] = df['문자열 열'].str.split(' ').str[:2]
# 결과 출력
print(df)
문자열 열 이름 성
0 이름 성1 성2 이름 성1 성2
1 이름2 성3 이름2 성3
2 이름3 성4 이름3 성4
이 방법은 간단하지만 분할하려는 문자열의 구조가 일관된 경우에만 사용할 수 있습니다.
결론
데이터프레임 문자열 열을 두 개의 열로 분할하는 방법은 여러 가지가 있습니다. 사용하는 방법은 특정 요구 사항과 데이터의 형식에 따라 다릅니다.
python dataframe pandas