类整数字符串中的隐藏字符

时间:2019-04-09 20:15:33

标签: python pandas

我从网上抓取了有关筹款的数据,并将其放入表格中。

当我开始清理数据时,我发现某些元素(例如“ 2 000000”)被机器读取为“ 2 \ xa0000000”。

1 /这是什么意思?

2 /如何删除它? (因为我想将整列转换为整数)

最好

3 个答案:

答案 0 :(得分:4)

要修复DataFrame列,请使用:

df['col'] = df['col'].str.replace('\D', '').astype(int)

答案 1 :(得分:2)

问题在于,您已将转义序列读为字符串中的Unicode字符。删除这些字符而不在每个特定的显示上使用替换的最简单方法是使用unicodedata包。

具体地说:

from unicodedata import normalize

string1 = "2\xa0000000"

new_string = normalize('NFKD', string1)

print(new_string)

输出:

2 000000 

此软件包已经内置在我的计算机中,但是如果您使用了与我不同的方法来构建python软件包,则可能需要安装它。我发现这种方法更好,因为此规范化可用于多种格式,因此您每次看到格式不正确的其他内容时,都不需要使用replace。这是一个转义序列

答案 2 :(得分:0)

十六进制代码A0的字符是不间断空格。可以这么说,在大多数情况下,您可以将其视为一个空间。根据我的经验,当我处理从Microsoft Office产品生成的某些数据时,或者在人们将HTML代码 放在Web上时,从Web生成的数据大多出现。

不幸的是,python split()(例如,我不知道您如何处理数据)不会将其视为空间。但这只是一个独特的特征,因此您可以使用以下方法解决问题:

longstring.replace('\xA0', ' ').split()

PS:再次阅读您的问题,似乎应该忽略产生数字200万作为数据实体。因此,您可能要用空字符串替换'\xA0'