我正在使用 pandas 将 Excel 电子表格作为数据框导入。该电子表格是手动维护的,包含多个数据输入错误,其中最常见的是格式化为带有前导不间断空格 ('\xa0') 的字符串的整数。电子表格会定期更新,因此完全无法预测这些令人讨厌的不一致现象何时何地出现。
基本上,我试图找到一种干净的方法来查找和重新格式化这些值。由于它们主要限于一列,因此我尝试了几个版本:
for entry in df.loc[:, 'col']:
if type(row) == str:
row = row.replace(u'\xa0', u'')
如果我在 for
循环中添加 print(row)
调用,它会准确打印我所期望的内容,即“1187383”变为“1187383”。但是,在 for 循环之外,该值不会被替换。循环执行后,调用 .loc
将返回未更改的条目 (“1187383”)。
我确信我在这里遗漏了一些明显的东西,但我现在已经投入了大约一天的时间来尝试找到解决方案。任何帮助表示赞赏!如果您需要更多信息,请告诉我。
最佳答案
我建议尝试Bharath Shetty's suggestion ,但略有改进:
s = df['col'].astype(str).str.replace('[^0-9.]', '')
df['col'] = pd.to_numeric(s, errors='coerce')
关于python - 替换数据框中格式不正确的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46566665/