Python 使用sklearn插补器后,如何维护相同的熊猫数据帧?
我试图用插补器替换所有的NaN值。但是,sklearn插补器将我的数据更改为numpy数组。如何使其在不将数据更改为numpy数组的情况下替换所有NaN值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) 当我检查完数据后,我得
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.
这将把数组转换为数据帧