Проблема с ColumnTransformer. Изменяется порядок столбцов фрейма данных

#python #pandas #scikit-learn

#python #pandas #scikit-learn

Вопрос:

Я пытаюсь использовать SimpleImputer в конкретных столбцах моего фрейма данных, а затем использовать эту предварительную обработку в конвейере. Я получил этот фрейм данных:

введите описание изображения здесь

Тогда это мое решение:

 from sklearn.compose import ColumnTransformer
from sklearn.impute import SimpleImputer

siFreq = SimpleImputer(
    missing_values=np.nan,  
    strategy='most_frequent',  
    verbose=0,
    copy=True
)

siZeros = SimpleImputer(
    missing_values=np.nan,  
    strategy='constant',  
    fill_value=0,
    verbose=0,
    copy=True
)

fet_zeros = ['NUM_COURSES_BEGINNER_DATASCIENCE','NUM_COURSES_ADVANCED_DATASCIENCE','NUM_COURSES_BEGINNER_BACKEND',
             'NUM_COURSES_ADVANCED_BACKEND','NUM_COURSES_BEGINNER_FRONTEND','NUM_COURSES_ADVANCED_FRONTEND']

fet_freq = ['HOURS_DATASCIENCE','HOURS_BACKEND','HOURS_FRONTEND','AVG_SCORE_DATASCIENCE',
            'AVG_SCORE_BACKEND','AVG_SCORE_FRONTEND']

column_trans = ColumnTransformer(
transformers = [('si_zeros', siZeros, fet_zeros),
 ('si_freq', siFreq, fet_freq)],
remainder='passthrough')

#New DataFrame
df_data_3 = pd.DataFrame.from_records(
    data=column_trans.fit_transform(df_data_2),
    columns=df_data_2.columns  # las columnas originales deben conservarse en esta transformación
)
  

Теперь проблема в том, что порядок столбцов изменяется в новом фрейме данных. Посмотрите:

введите описание изображения здесь

Я нашел «решение», изменяющее dis:

 data=column_trans.fit_transform(df_data_2)[:,[6,7,8,0,2,4,1,3,5,9,10,11,12]],
  

Посмотрите:

введите описание изображения здесь

Но теперь у меня возникла другая большая проблема, когда я пытаюсь выполнить конвейерную обработку ColumnTransformer, потому что данные будут обрабатываться неправильным образом.