배열의 다른 두 열을 수정하지 않기 위해 OneHotEncoder를 하나의 열(X[:, 0].reshape(-1, 1))에만 적용했습니다. 여러 개의 특성이 있는 배열에서 특정 열만 변환하려면 ColumnTransformer를 사용합니다. 이 클래스는 다음과 같이 (name, transformer, column(S)) 튜플의 리스트를 받습니다.
>>> from sklearn.compose import ColumnTransformer
>>> X = df[['color', 'size', 'price']].values
>>> c_transf = ColumnTransformer([
... ('onehot', OneHotEncoder(dtype=int), [0]),
... ('nothing', 'passthrough', [1, 2])
... ])
>>> c_transf.fit_transform(X)
array([[0.0, 1.0, 0.0, 1, 10.1],
[0.0, 0.0, 1.0, 2, 13.5],
[1.0, 0.0, 0.0, 3, 15.3]])
앞의 코드 예에서 첫 번째 열만 변환하기 위해 지정했고 나머지 두 열은 변경하지 않고 그대로 두기 위해 'passthrough'로 지정했습니다.
원-핫 인코딩으로 더미 변수를 만드는 더 편리한 방법은 판다스의 get_dummies 메서드를 사용하는 것입니다. DataFrame에 적용하면 get_dummies 메서드는 문자열 열만 변환하고 나머지 열은 그대로 둡니다.