데이터프레임 문자열 열을 두 개의 열로 분할하는 방법은 무엇입니까?
테이블 형식 데이터로 작업할 때 추출할 데이터를 조작해야 하는 경우가 많습니다. 특정 정보. 일반적인 작업 중 하나는 문자열 값의 단일 열을 각각 원래 문자열의 일부를 포함하는 여러 열로 분할하는 것입니다.
문제 및 요구 사항
DataFrame이 있다고 가정합니다. 다음 형식의 문자열 값을 포함하는 행이라는 하나의 열이 있는 df라는 이름을 사용합니다.
row 0 00000 UNITED STATES 1 01000 ALABAMA 2 01001 Autauga County, AL 3 01003 Baldwin County, AL 4 01005 Barbour County, AL
우리의 목표는 행 열을 두 개의 새 열(fips 및 row)로 바꿉니다. 여기서 fips에는 각 문자열의 처음 5개 문자가 포함되고 행에는 나머지 문자가 포함됩니다.
str.split()을 사용한 솔루션
행 열을 분할하는 한 가지 방법은 str.split() 메서드를 사용하는 것입니다. 이 방법은 정규식을 인수로 사용하고 정규식에 지정된 패턴을 기반으로 문자열을 분할합니다. 우리의 경우 다음 정규식을 사용할 수 있습니다.
r'(\d{5}) +'
이 정규식은 5자리 숫자 뒤에 하나 이상의 공백이 오는 순서와 일치합니다. 그런 다음 str.split() 메서드를 사용하여 이 정규식을 사용하여 행 열을 분할하고 결과 목록을 다음과 같이 fips 및 행 열에 할당할 수 있습니다.
import pandas as pd # Split the 'row' column into 'fips' and 'row' columns df[['fips', 'row']] = df['row'].str.split(r'(\d{5}) +', n=1, expand=True)
expand=True 매개변수는 다음과 같습니다. str.split() 메서드가 일련의 열이 아닌 여러 열이 있는 DataFrame을 반환해야 함을 지정하는 데 사용됩니다. 목록.
결과
위 코드를 실행한 후 DataFrame df는 다음과 같습니다.
fips row 0 00000 UNITED STATES 1 01000 ALABAMA 2 01001 Autauga County, AL 3 01003 Baldwin County, AL 4 01005 Barbour County, AL
다음을 사용하는 대체 솔루션 str.extract()
행 열을 분할하는 또 다른 방법은 다음과 같습니다. str.extract() 메소드를 사용합니다. 이 메서드는 정규식을 인수로 사용하고 정규식과 일치하는 항목이 포함된 DataFrame을 반환합니다. 우리의 경우 다음 정규 표현식을 사용할 수 있습니다.
r'(\d{5}) +\D+'
이 정규 표현식은 5개의 숫자 뒤에 하나 이상의 숫자가 아닌 숫자가 오는 순서와 일치합니다. 그런 다음 str.extract() 메서드를 사용하여 이 정규식에 대한 일치 항목을 추출하고 결과 DataFrame을 다음과 같이 fips 및 행 열에 할당할 수 있습니다.
import pandas as pd # Split the 'row' column into 'fips' and 'row' columns df[['fips', 'row']] = df['row'].str.extract(r'(\d{5}) +\D+')
Result
위 코드를 실행한 후 DataFrame df는 다음과 같습니다.
fips row 0 00000 UNITED STATES 1 01000 ALABAMA 2 01001 Autauga County, AL 3 01003 Baldwin County, AL 4 01005 Barbour County, AL
둘 다 위의 솔루션은 행 열을 fips 및 행 열로 분할하여 원하는 결과를 얻을 수 있습니다. str.split() 솔루션은 더 유연하고 정규 표현식을 기반으로 열을 분할하는 데 사용할 수 있는 반면, str.extract() 솔루션은 더 간단하고 이해하기 쉽습니다.
위 내용은 Pandas DataFrame 문자열 열을 두 개의 열로 분할하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!