from sklearn_pandas import DataFrameMapper, gen_features
mean_columns_2d = [[f] for f in mean_columns]
bool_columns_2d = [[f] for f in bool_cols]
feature_def1 = gen_features(columns=mean_columns_2d, classes=[{'class': SimpleImputer, 'strategy':'mean'},StandardScaler])
feature_def2 = gen_features(columns=bool_columns_2d, classes=[{'class': SimpleImputer, 'strategy':'most_frequent'}])
feature_def_all = feature_def1 + feature_def2
mapper = DataFrameMapper(feature_def_all)
x_train = mapper.fit_transform(df_train).astype('float32')
x_val = mapper.transform(df_val).astype('float32')