首页 > 解决方案 > ColumnTransformer 的问题。DataFrame 列排序更改

问题描述

我尝试在 DataFrame 的特定列中使用 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
)

现在,问题是新 DataFrame 中的列顺序发生了变化。看:

在此处输入图像描述

我找到了一个改变dis的“解决方案”:

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

看:

在此处输入图像描述

但是,现在当我尝试管道 ColumnTransformer 时遇到了另一个大问题,因为数据将以错误的方式处理。

标签: pythonpandasscikit-learn

解决方案


推荐阅读