Scikit:问题从不正确而不是numpy数组返回数据帧

时间:2019-06-26 01:41:10

标签: python pandas numpy dataframe scikit-learn

我正在尝试使用scikit-learn IterativeImputer()在数据框中插入一些缺少的值。问题在于,推动者将pandas数据帧作为输入,但是将返回numpy数组而不是原始数据帧。这是摘自此post的一个简单示例。

# Create an empty dataset
df = pd.DataFrame()

# Create two variables called x0 and x1. Make the first value of x1 a missing value
df['x0'] = [0.3051,0.4949,0.6974,0.3769,0.2231,0.341,0.4436,0.5897,0.6308,0.5]
df['x1'] = [np.nan,0.2654,0.2615,0.5846,0.4615,0.8308,0.4962,0.3269,0.5346,0.6731]

imputer = IterativeImputer(max_iter=10, random_state=42)
imputer.fit(df)
imputed_df = imputer.transform(df)
imputed_df

问题在于,当返回numpy数组时,将删除列名和其他元数据。我当然可以从原始数据帧中手动提取该元数据,然后重新应用它,但这似乎有点棘手。 PandasDataframe.fillna()方面有自己的缺点,但是算法不如scikit复杂。

因此,有一种方法可以使嵌入式计算机适合数据框并从结果返回数据框。

1 个答案:

答案 0 :(得分:2)

是的,只需将值赋回

df[:]= imputer.transform(df)