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

标签 python string pandas type-conversion

我正在使用 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/

相关文章:

python - django 模板 anchor 标记不起作用

python - Pandas 的差异但用户定义的函数

python - 如何使用交叉表显示频率列表?

python - 无需遍历图像中的所有像素即可更快地计算像素强度(颜色值)的方法

Python - 使用日期时间将日期字符串从 YYYY-MM-DD 转换为 DD-MMM-YYYY?

c++ - 从 Python 扩展调用 C++ 虚拟成员时崩溃

Java-Android 如何将字符串中的字母转换为指定数字

string - 使用 Swift 中的 find/get 函数将字符串分成多个字符串

string - 寻找将一个字符串转换为另一字符串的最小交换次数,其中字符串可能包含重复的字符

python:pandas - 如何将 pandas 数据帧的前两行合并到数据帧标题?