2017-02-23 7 views
0

Пусть у меня есть следующий DataFrame:Панды: заполнить недостающие значения, режим, имеющий «индекс вне границ» ошибки

Sample=pd.DataFrame({'Gender':['Male','Male','Male','Male','Female','Female','Male','Male'], 
      'Married':['No','Yes','Yes','Yes','No','No','Yes','Yes'], 
      'Dependents':['1','1','1','0','3+','3+','1','1'], 
      'Education':['Not Graduate','Graduate','Graduate','Graduate','Not Graduate','Not Graduate','Graduate','Graduate'], 
      'ApplicantIncome':[3596,3717,4166,2400,3333,6000,1234,4567], 
      'Credit_History':['1',np.nan,'0','1',np.nan,'1',np.nan,'0']}) 

    ApplicantIncome Credit_History Dependents Education  Gender Married 
0  3596     1    1   Not Graduate Male No 
1  3717    NaN    1   Graduate  Male Yes 
2  4166     0    1   Graduate  Male Yes 
3  2400     1    0   Graduate  Male Yes 
4  3333    NaN    3+  Not Graduate Female No 
5  6000     1    3+  Not Graduate Female No 
6  1234    NaN    1   Graduate  Male Yes 
7  4567     0    1   Graduate  Male Yes 

Я хотел бы, чтобы заполнить NaN со значением Mode в [ «Пол» , «Женатые», «Зависимые», «Образование»).

Я написал код ниже:

Sample['Credit_History']=Sample.groupby(['Gender','Married','Dependents','Education']).transform(lambda x: 
        x.fillna(x.mode()[0]))['Credit_History'] 

сообщение об ошибке о вне границ выскочило:

IndexError: ('index out of bounds', 'occurred at index ApplicantIncome') 

Любая идея о том, как исправить мой код выше? Благодаря!

ответ

0

Вы можете использовать простой код для достижения желаемого. df["credithistory"].fillna(df["credithistory"].mode())

Не забудьте импортировать numpy.

+1

numpy не имеет атрибута режима, я думаю, –

+0

вместо этого добавил режим метода серии. – nitinvijay23

Смежные вопросы