我只想对数据框中的几个NA单元进行KNN测试。我想用接近的数据填充这些数据,我必须使它适用于我的测试数据框架,所以我不仅要设置它。我想填写MasVnrArea中的值

 StyleAndYrDF= trainDF.loc[:,['YearBuilt','Exterior1st','Exterior2nd']]
 Temp=trainDF.loc[230:234, ['MasVnrArea']]

  def fillIt(df,x):
         ID= findNearestHOF(df, x)
         return trainDF.loc[ID,'MasVnrArea']

 EstimatedMasVnr=Temp.apply(lambda x: fillIt(StyleAndYrDF,x) if (pd.isna(x.loc['MasVnrArea'])) else x.loc['MasVnrArea'])


我不断收到此错误:KeyError :(“ MasVnrArea”,“发生在索引MasVnrArea”)

最佳答案

您正在错误的方向进行应用。这将解决您的问题:

EstimatedMasVnr = Temp.apply(lambda x: fillIt(StyleAndYrDF,x) if (pd.isna(x.loc['MasVnrArea'])) else x.loc['MasVnrArea']
                          , axis=1)


另外,我认为这种表示法更简洁:

EstimatedMasVnr = Temp.apply(lambda row: fillIt(StyleAndYrDF,row)
                                         if (pd.isna(row['MasVnrArea']))
                                         else row['MasVnrArea']
                          , axis=1)

10-06 03:09