我刮的数据来自网络募捐,并把它插入表中。当我开始清理数据时,我看到某些元素,例如“2 000000”,被机器读取为“2\xa0000000”。1/ 那是什么意思?2/ 我怎样才能删除它?(因为我想将整列转换为整数)最好的,
3 回答
慕哥6287543
TA贡献1831条经验 获得超10个赞
要修复DataFrame
列,请使用:
df['col'] = df['col'].str.replace('\D', '').astype(int)
富国沪深
TA贡献1790条经验 获得超9个赞
问题是您将转义序列作为字符串中的 Unicode 字符读入。删除这些字符而不在每个特定显示上使用替换的最简单方法是使用unicodedata包。
具体来说:
from unicodedata import normalize
string1 = "2\xa0000000"
new_string = normalize('NFKD', string1)
print(new_string)
输出:
2 000000
这个包已经内置到我的机器中,但是如果你使用与我不同的方法来构建你的 python 包,你可能需要安装它。我觉得这更好,因为这种规范化适用于很多不同的格式,所以你不需要每次看到格式不正确的其他内容时使用替换。这是一个转义序列
达令说
TA贡献1821条经验 获得超6个赞
十六进制代码的字符A0
是不间断空格。可以这么说,在大多数情况下,您可以将其视为一个空间。根据我的经验,当我处理一些从 Microsoft Office 产品生成的数据时,或者当人们将 HTML 代码
放在上面时从 Web 中生成的数据,它通常会出现。
不幸的是,python split()
(例如,我不知道您如何处理数据)不会将其视为空间。但由于它只是一个独特的角色,您可以通过以下方式解决问题:
longstring.replace('\xA0', ' ').split()
PS:再次阅读您的问题,似乎应该忽略将数字 200 万作为数据实体。所以你可能想'\xA0'
用空字符串替换。
添加回答
举报
0/150
提交
取消