代码之家  ›  专栏  ›  技术社区  ›  krishnab

scikit:从输入程序而不是numpy数组返回数据帧时出现问题

  •  0
  • krishnab  · 技术社区  · 7 年前

    我试图使用 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
    

    问题是当 纽比 返回数组,删除列名和其他元数据。当然,我可以从原始数据框中手动提取元数据,然后重新应用它,但这似乎有点老套。 Pandas 在以下方面有自己的估算 Dataframe.fillna() 但是算法并没有 scikit 一个。

    所以,有没有一种方法可以将输入程序与数据帧匹配,并从结果返回数据帧。

    1 回复  |  直到 7 年前
        1
  •  2
  •   BENY    7 年前

    是的,你可以,只要把值赋回来

    df[:]= imputer.transform(df)
    
    推荐文章