2017-12-07 44 views
1

Imputer.fit_transform()をデータセットに適用した後、変換されたデータフレームの列名が失われています。列名を失うことなくそれを置き換える方法はありますか?Pythonで欠損値代入

+0

こんにちは、SOへようこそ。ヘルプページ、特に[ここではどのトピックについて聞かせていただけますか?](http://stackoverflow.com/help/on-topic)と[質問しないでください。」](http://stackoverflow.com/help/dont-ask)。さらに重要なことは、[Stack Overflow question checklist](http://m...content-available-to-author-lyly.e.e.com/q/156810/204922)をお読みください。また、[最小、完全、および検証可能な例](http://stackoverflow.com/help/mcve)についても知りたいことがあります。おそらくあなたの質問を書式化して、これまでのあなたの仕事を見せてください。 – cse

+0

オリジナルのデータフレームの列を使用して、新しい返されたものを折り返します。 –

+0

えええええええええええええええと、彼らはお互いから独立している..しかし、Viveksのソリューションは大丈夫です。 – dmeu

答えて

2

質問のコメントで述べたように、データフレームの値をImputerから返されたデータで置き換える(再割り当てする)だけです。

これはあなたのデータフレームであるとしましょう:

import numpy as np 
import pandas as pd 

df = pd.DataFrame(data=[[1,2,3], 
         [3,4,4], 
         [3,5,np.nan], 
         [6,7,8], 
         [3,np.nan,1]], 
        columns=['A', 'B', 'C']) 

現在df

A B C 
0 1 2.0 3.0 
1 3 4.0 4.0 
2 3 5.0 NaN 
3 6 7.0 8.0 
4 3 NaN 1.0 

あなたはこの使用し、Imputerにdf全体を送信している場合は、次の場合

df[df.columns] = Imputer().fit_transform(df) 

をいくつかの列だけを送信してから、それらの列を使用して割り当てますn個の結果:

columns_to_impute = ['B', 'C'] 
df[columns_to_impute] = Imputer().fit_transform(df[columns_to_impute]) 

出力:

 A B C 
0 1.0 2.0 3.0 
1 3.0 4.0 4.0 
2 3.0 5.0 4.0 
3 6.0 7.0 8.0 
4 3.0 4.5 1.0 
関連する問題