ColumnTransformer applies different transformations to groups of columns: scaling for numerical ones, encoding for categorical ones. The results are assembled into a single matrix. It integrates into a Pipeline, which guarantees preprocessing fit on the training set only.
Example
ColumnTransformer([('num', StandardScaler(), num_cols), ('cat', OneHotEncoder(), cat_cols)])