2017-12-07 8 views
1

내 데이터 집합에 Imputer.fit_transform()을 적용한 후 변형 된 데이터 프레임에서 열 이름이 손실됩니다. 열 이름을 잃지 않고 그것을 전가 할 방법이 있습니까?파이썬에서 누락 값 imputation

+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. com/q/156810/204922)를 읽어보십시오. [Minimal, Complete, Verifiable Examples] (http://stackoverflow.com/help/mcve)에 대해 배우고 싶을 수도 있습니다. 아마 당신의 질문을 형식화하고 지금까지 우리에게 당신의 일을 보여주십시오. – cse

+0

원본 데이터 프레임의 열을 사용하여 새로 반환 된 열을 다시 감싸면됩니다. –

+0

네, 스켈레톤은 팬더와 더 잘 어울려야합니다. 그렇지만 그들은 서로 독립적입니다.하지만 비벡스 솔루션은 괜찮습니다. – dmeu

답변

2

질문에 대한 의견에서 말했듯이, 데이터 프레임의 값을 Imputer에서 반환 된 데이터로 바꾸면됩니다.

말할 수 있습니다이 당신의 dataframe입니다 :

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 :

df[df.columns] = Imputer().fit_transform(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을 전체 전송하는 경우, 바로 이것을 사용 일부 열만 보내고 그런 다음 해당 열만 사용하여 할당하십시오. 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