Python 数据帧列:用数字替换字符串值时出错
我有一个dataframe列,它有整数和Python 数据帧列:用数字替换字符串值时出错,python,pandas,Python,Pandas,我有一个dataframe列,它有整数和'NA'值。下面是列的唯一值 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
'NA'
值。下面是列的唯一值
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'
这个问题的原因是什么?还有其他方法吗?原因是
NAReplace
被定义为字典,语法NAReplace[item]
要求item
是NAReplace
的一个键,否则会看到keyrerror
在任何情况下,列表理解在这里都不合适。只需使用fillna
:
testData['LotFrontage'] = testData['LotFrontage'].replace('NA', 0)
很可能您需要数字数据,在这种情况下,我建议您转换为数字:
testData['LotFrontage'] = pd.to_numeric(testData['LotFrontage'], errors='coerce').fillna(0)
参数
errors='compresse'
强制不可转换的值给出NaN
,因为在列表理解中,您从字典中获取所有值的值
八十
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)
好吧,两个都在同一时间在pd上。到数值。