python - 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 时遇到了另一个大问题,因为数据将以错误的方式处理。
解决方案
推荐阅读
- javascript - JavaScript使用console.log获取带有引号的嵌套数组(1级)保留数字
- php - Laravel 雄辩地将数组作为对象
- javascript - jQuery 不响应第二个“this”
- spring-restcontroller - Spring SpEL 使用列表设置 RequestMapping 路径
- javascript - 将用户输入数据添加到 React 应用程序中的 consts
- git - git 恢复本地未提交的更改
- javascript - 如何使用时间戳从 mongodb 获取最后 7 天?
- python - 子进程未在 Windows 上继承 Python 全局变量
- typescript - 如何在 TypeScript 中指定默认构造函数作为参数
- visual-studio-code - 如何删除已发布的 vscode 扩展?