我有pandas dataframe列,它具有整数和'NA'值。 Followinare是该列的唯一值

 print(testData.LotFrontage.unique())

 ['80' '81' '74' '78' '43' '75' 'NA' '63' '85' '70' '26' '21' '24']


我需要将此字符串NA替换为整数0。我尝试了以下代码

NAReplace = {'NA': 0}

trainingData.LotFrontage = [NAReplace[item] for item in trainingData.LotFrontage ]


我收到一个错误

    trainingData.LotFrontage = [NAReplace[item] for item in trainingData.LotFrontage ]
KeyError: '65'


这个问题的原因是什么?还有其他方法吗?

最佳答案

因为在列表推导中,您获得的值是所有值的字典,

80
81
..

字典将尝试查找那些不是'NA'的键,因此您必须执行get

trainingData.LotFrontage = [NAReplace.get(item,item) for item in trainingData.LotFrontage ]


此外,pandasicer将是:

testData['LotFrontage'] = pd.to_numeric(testData['LotFrontage'],errors='coerce').fillna(0)


还有一个来自jpp的答案。

但是要向jpp的第一个添加一些内容:

testData['LotFrontage'].replace('NA', 0,inplace=True)

08-19 21:46