다음과 같은 데이터프레임에 engine, mileage, max_power 등 각 값에 숫자와 문자가 함께 있는 컬럼들이 있다.
이런 컬럼들에서 숫자와 문자를 분리하기 위해 str.split() 함수를 사용할 수 있으며, 실행 결과는 다음과 같다.
data['engine'].str.split()
이렇게 분리했을 때 숫자 값은 [0]번 인덱스에 존재하므로 다음과 같이 인덱스를 사용해 추출할 수 있다.
data['engine'].str.split().str[0]
추출한 결과를 기존 데이터 프레임에 반영하기 위해서는 분리한 개수만큼의 코드를 반복해서 작성해야 한다.
data['engine'] = data['engine'].str.split().str[0]
data['engine_unit'] = data['engine'].str.split().str[1]
위와 같이 split을 한 후 인덱싱을 통해 숫자값을 추출할 수 있지만, split 함수의 매개변수인 expand를 사용하면 조금 더 편리하게 하나의 컬럼을 분리할 수 있다.
expand 매개변수를 사용하면 enigne 하나의 컬럼을 두 개의 컬럼으로 분리할 수 있다.
data['engine'].str.split(expand=True)
expand를 사용한 결과를 기존 데이터에 컬럼 이름을 설정하여 반영해 주면 split만 사용했을 때보다 과정이 수월해진다.
data[['engine', 'enigne_unit']] = data['engine'].str.split(expand=True)
더 자세한 정보는 아래 공식 문서에서 볼 수 있다.
데이터: https://media.githubusercontent.com/media/musthave-ML10/data_source/main/car.csv
반응형