我正在尝试填充数据帧中单列的一部分中的缺失值。原因是,由于实际缺少数据,该列中的三个值均为NaN。实际上缺少其他1400个左右的缺失值,因为房屋没有游泳池。对于第一种情况,我想用中位数填充数据。对于后一种情况,我想用“ NA”对丢失的数据进行编码,这对于没有游泳池的房屋来说是合适的值。
我的代码看起来像这样,并且不起作用(没有错误或警告,没有结果):
test_df.loc[test_df.PoolQC.isna() & (test_df.PoolArea == 0), ['PoolQC']].fillna('NA', inplace=True)
test_df.loc[test_df.PoolQC.isna() & (test_df.PoolArea > 0), ['PoolQC']].fillna(mode, inplace=True)
但是,以下代码有效:
test_df.loc[test_df.PoolQC.isna() & (test_df.PoolArea == 0), ['PoolQC']] = 'NA'
test_df.loc[test_df.PoolQC.isna() & (test_df.PoolArea > 0), ['PoolQC']] = mode
在文档中找不到发生这种情况的任何原因。我不太介意使用变通方法,因为它实际上更短,但是我很好奇为什么会这样,并且在这种情况下有什么最佳实践?