Python 使用sklearn插补器后,如何维护相同的熊猫数据帧?

Python 使用sklearn插补器后,如何维护相同的熊猫数据帧?,python,pandas,scikit-learn,Python,Pandas,Scikit Learn,我试图用插补器替换所有的NaN值。但是,sklearn插补器将我的数据更改为numpy数组。如何使其在不将数据更改为numpy数组的情况下替换所有NaN值 from sklearn.preprocessing import Imputer import pandas as pd df = pd.read_csv('my_data') imp = Imputer(strategy='median') imp.fit(df) df = imp.transform(df) 当我检查完数据后,我得

我试图用插补器替换所有的NaN值。但是,sklearn插补器将我的数据更改为numpy数组。如何使其在不将数据更改为numpy数组的情况下替换所有NaN值

from sklearn.preprocessing import Imputer
import pandas as pd

df = pd.read_csv('my_data')

imp = Imputer(strategy='median')
imp.fit(df)
df = imp.transform(df)

当我检查完数据后,我得到的不是以前格式良好的数据,而是一个numpy数组。

您需要从新的numpy数组中替换原始
数据帧中的值。你可以做:

  • 迭代dataframe中的列并为其分配numpy列:

    for i, col in enumerate(df.columns):
        df[col] = df2[:,i]
    
  • 直接指定所有列:

    df[df.columns] = df2
    
  • 使用旧数组中的列和索引,使用numpy数组创建一个新的
    DataFrame

    df_new = pd.DataFrame(df2, columns = df.columns, index=df.index)
    
  • 如果使用
    输入器
    不是强迫,则直接使用:


  • 您需要替换新numpy数组中原始数据帧中的值。你可以做:

  • 迭代dataframe中的列并为其分配numpy列:

    for i, col in enumerate(df.columns):
        df[col] = df2[:,i]
    
  • 直接指定所有列:

    df[df.columns] = df2
    
  • 使用旧数组中的列和索引,使用numpy数组创建一个新的
    DataFrame

    df_new = pd.DataFrame(df2, columns = df.columns, index=df.index)
    
  • 如果使用
    输入器
    不是强迫,则直接使用:

  • 一个简单的方法->

    df = pd.read_csv('my_data')
    col = ['a','b','c','d']  #save your columns in an array
    imp = Imputer(strategy='median')
    imp.fit(df)
    df = imp.transform(df)
    df = pd.Dataframe(df,columns=col) # COnvert it back to dataframe. 
    
    这将把数组转换为数据帧。

    一种简单的方法->

    df = pd.read_csv('my_data')
    col = ['a','b','c','d']  #save your columns in an array
    imp = Imputer(strategy='median')
    imp.fit(df)
    df = imp.transform(df)
    df = pd.Dataframe(df,columns=col) # COnvert it back to dataframe. 
    
    这将把数组转换为数据帧