2015-11-11 2 views
8

私はpandas DataFrameのすべての列を代用したいと思います。下に示す...列全体を反復せずにScikit-learn(sklearn)を使用してDataFrame全体(すべての列)を代入する

データフレーム全体を反復せずにデータフレームを代入できる操作はありますか?

#!/usr/bin/python 
from sklearn.preprocessing import Imputer 
import numpy as np 
import pandas as pd 

#Imputer 
fill_NaN = Imputer(missing_values=np.nan, strategy='mean', axis=1) 

#Model 1 
DF = pd.DataFrame([[0,1,np.nan],[2,np.nan,3],[np.nan,2,5]]) 
DF.columns = "c1.c2.c3".split(".") 
DF.index = "i1.i2.i3".split(".") 

#Impute Series 
imputed_DF = DF 
for col in DF.columns: 
    imputed_column = fill_NaN.fit_transform(DF[col]).T 
    #Fill in Series on DataFrame 
    imputed_DF[col] = imputed_column 

#DF 
#c1 c2 c3 
#i1 0 1 NaN 
#i2 2 NaN 3 
#i3 NaN 2 5 

#imputed_DF 
#c1 c2 c3 
#i1 0 1.0 4 
#i2 2 1.5 3 
#i3 1 2.0 5 

答えて

18

あなたがmeanmedianをしたい場合は、あなたのような何かを行うことができます:あなたは0またはあなたが常にちょうど何ができる何かでそれらを埋めるためにしたい場合は

fill_NaN = Imputer(missing_values=np.nan, strategy='mean', axis=1) 
imputed_DF = pd.DataFrame(fill_NaN.fit_transform(DF)) 
imputed_DF.columns = DF.columns 
imputed_DF.index = DF.index 

を:

DF[DF.isnull()] = 0 
+1

を私は非常に多くの悪い例を見つけました、そして、これは私にとって意味をなさない最初のものでした。ありがとうございました! –

+1

ありがとう!私は私の答えから良いフィードバックを得ていないので、本当に感謝しています。 –

+1

+1元の列名とインデックスを持つDataFrameタイプを復元する手順を含むため、生のnumpy配列がsklearnから出てきたImputer –

関連する問題