替换数据框中格式不正确的值

时间:2017-10-04 13:51:54

标签: python string pandas type-conversion

我正在使用pandas将Excel电子表格导入为数据框。手动维护电子表格并包含多个数据输入错误,其中最常见的是整数格式化为带有前导不间断空格的字符串(' \ xa0')。电子表格会定期更新,因此弹出这些令人讨厌的不一致的地方和时间是完全不可预测的。

基本上,我试图找到一种简洁的方法来查找和重新格式化这些值。因为它们主要限于一列,所以我尝试了几个版本:

for entry in df.loc[:, 'col']:
    if type(row) == str:
        row = row.replace(u'\xa0', u'')

如果我在print(row)循环中添加for次调用,则会打印出我期望的内容,即' 1187383'成为' 1187383'。但是,在for循环之外,该值不会被替换。循环执行后,调用.loc将返回未更改的条目(' 1187383')。

我确定我在这里遗漏了一些明显的东西,但我现在投入了大约一天的时间来寻找解决方案。任何帮助表示赞赏!如果您需要更多信息,请告诉我。

1 个答案:

答案 0 :(得分:2)

我建议您尝试Bharath Shetty's suggestion,但稍有改进:

s = df['col'].astype(str).str.replace('[^0-9.]', '')
df['col'] = pd.to_numeric(s, errors='coerce')
相关问题