【问题标题】:Remove unicode '\xa0' from pandas column从 pandas 列中删除 unicode '\xa0'
【发布时间】:2019-08-21 21:18:36
【问题描述】:

我得到了一个 latin-1 .txt 数据集,我正在尝试对其进行清理,以便使用 python 3 和 pandas 进行适当的分析。从 html 中抓取的数据集包含许多 \xa0 事件,我似乎无法使用 decode、strip、-u replace 或我在堆栈溢出时发现的任何其他方法来处理这些事件。我的所有尝试似乎都被 python 忽略了,仍然打印出相同的结果。由于我是数据抓取的新手,我很可能错过了一些明显的事情,但现在我看不到前进的方向

我尝试解码为 ascii,剥离为 str 然后替换,或使用 -u 子句替换,没有任何结果

filepath = 'meow3.txt'  
outF = open("myOutFile.txt", "a")
with open(filepath) as fp:  
    line = fp.readline()
    for line in fp:
        if line.strip().startswith(','):
            line = line.replace(',','',1)
        line = line.replace(u'\xa0', u' ')
        print(line)

df = pd.read_csv('myOutFile.txt', sep=",", encoding="latin-1", header=None, names=["Company name", "Total", "Invested since-to"])

print (df)
3sun Group, £10m ,Feb 2014 
,Abacus, £4.15m ,Aug 2013 
,Accsys Group ,£12m, Mar 2017, 
Acro ,\xa0£7.8m, Nov 2015 – Sep 2017, 
ACS Clothing, £25.3m ,Jan 2014 

这就是数据集的样子,以及为什么在我的代码中我要删除第一个逗号,前提是它位于列的开头。但我尝试的建议答案似乎都没有帮助删除数据集的 \xa0 部分,仍然给出相同的结果(见上文)。如果有人对我如何完成这项工作有任何线索,我将不胜感激, 干杯, 耶利哥

编辑:虽然我知道最好在将其转换为 txt 文件之前通过预处理来解决此问题,但我无法访问或控制该过程,并且我必须处理提供给我的数据。

【问题讨论】:

  • 请添加示例数据。 5 行就够了。
  • a) 我添加了示例数据 b) 我明确指出该问题中的方法不起作用

标签: python-3.x string pandas encoding


【解决方案1】:

在读取文件后执行此操作。

df['col'] = df['col'].apply(lambda x: str(x).replace(u'\xa0', u''))

【讨论】:

    【解决方案2】:

    我今天突然被这个问题卡住了,终于找到了一个最快最整洁的解决方案。 假设您的 pandas 数据框有一列,其值类似于“South\xa0Carolina”。

    使用以下代码删除所有 '\xa0'。其实我试过 .replace("\xa0"," ") 和 .replace(r'\xa0',r' '),但都没有奏效。

    data['col'].str.split().str.join(' ')
    

    【讨论】:

    • 谢谢!这为我节省了很多。
    【解决方案3】:

    也许将行解码为 UTF8 会有所帮助

    line = line.decode('UTF-8') 
    

    然后根据需要进行字符串替换。

    【讨论】:

    • 问题在于 readline 已经读取为字符串,虽然我试图寻找没有的方法,但它们似乎都忽略了换行符之类的东西,我想保留
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-31
    • 2018-05-29
    • 2021-04-16
    • 1970-01-01
    • 2012-06-15
    • 1970-01-01
    • 2015-04-16
    相关资源
    最近更新 更多