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

的数据来自网络募捐,并把它插入表中。

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

1/ 那是什么意思?

2/ 我怎样才能删除它?(因为我想将整列转换为整数)

最好的,


回首忆惘然
浏览 111回答 3
3回答

慕哥6287543

要修复DataFrame列,请使用:df['col'] = df['col'].str.replace('\D', '').astype(int)

富国沪深

问题是您将转义序列作为字符串中的 Unicode 字符读入。删除这些字符而不在每个特定显示上使用替换的最简单方法是使用unicodedata包。具体来说:from unicodedata import normalizestring1 = "2\xa0000000"new_string = normalize('NFKD', string1)print(new_string)输出:2 000000 这个包已经内置到我的机器中,但是如果你使用与我不同的方法来构建你的 python 包,你可能需要安装它。我觉得这更好,因为这种规范化适用于很多不同的格式,所以你不需要每次看到格式不正确的其他内容时使用替换。这是一个转义序列

达令说

十六进制代码的字符A0是不间断空格。可以这么说,在大多数情况下,您可以将其视为一个空间。根据我的经验,当我处理一些从 Microsoft Office 产品生成的数据时,或者当人们将 HTML 代码 放在上面时从 Web 中生成的数据,它通常会出现。不幸的是,python split()(例如,我不知道您如何处理数据)不会将其视为空间。但由于它只是一个独特的角色,您可以通过以下方式解决问题:longstring.replace('\xA0', ' ').split()PS:再次阅读您的问题,似乎应该忽略将数字 200 万作为数据实体。所以你可能想'\xA0'用空字符串替换。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python