使用KNN Imputation拼接变量时触发numpy.ndarray类型错误如何解决?
错误触发原因
该报错是你使用pd.concat()执行拼接时传入了不支持的参数类型导致的:pd.concat()仅支持拼接pandas内置的Series、DataFrame类型对象,而KNN Imputation填充处理完成后默认返回的是numpy.ndarray类型的数组,你直接将填充后的数组传入pd.concat()的参数列表,就会触发上述类型不匹配错误。
修复方案
你只需要把KNN填充后的numpy数组先转为DataFrame/Series类型,再执行拼接即可,常用两种适配写法如下:
- 情况1:填充的是多列特征,转为DataFrame
# 假设imputer是你初始化的KNNImputer实例,raw_feature是输入的原始待填充特征 imputed_arr = imputer.fit_transform(raw_feature) # 转为DataFrame,columns参数指定和原特征一致的列名,避免拼接后列名混乱 imputed_df = pd.DataFrame(imputed_arr, columns=raw_feature.columns) # 再执行拼接操作即可 final_df = pd.concat([other_df, imputed_df], axis=1)
- 情况2:填充的是单列数据,转为Series
imputed_arr = imputer.fit_transform(raw_feature.reshape(-1,1)).flatten() # 转为Series,name参数指定和原列一致的列名 imputed_series = pd.Series(imputed_arr, name=raw_feature.name) final_df = pd.concat([other_df, imputed_series], axis=1)
内容的提问来源于stack exchange,提问作者Daana Ortiz
相关产品推荐
相关产品推荐

