替换python中的非ascii空格字符(pandas)

时间:2018-06-18 14:02:56

标签: python pandas

我正在处理从excel电子表格中提取的一些识别号码。它们是数字和字符串的混合体。 (手动维护excel表)我把它加载到pandas中并注意到数据中的一些空格。我在我的df上运行了一个过滤器,但只有两行。所以,我进去运行这段代码:

for i in exceldata['CL ID #']:
    print(repr(str(i)))

我得到了一些奇怪的结果。似乎空间根本不是空格,而是某种奇怪的非ascii字符。以下是一些值以及它们以不同方式打印的方式。

for i in exceldata['ID']:
    print(repr(str(i)))

'502705'

'527167\xa0'

'575405\xa0'

......通常打印相同的值

exceldata['ID']

   502705
   502717 
   537545 

我已经挖掘并找到了如何改变价值观的解决方案。但是,这是我的请求不同的地方:我需要在pandas数据帧中清理这些奇数值。我无法弄清楚如何在设置逻辑中做到这一点。这是一个非常简单的修复,但你不能在Pandas df上使用循环,因为你只是编辑副本,而不是实际的df本身。任何帮助/方向都表示赞赏。

编辑:这不是重复。我需要能够迭代一个pandas数据帧,这就是让我失望的部分。

1 个答案:

答案 0 :(得分:1)

鉴于该列包含数字和字符串的混合,您可能最好将所有内容转换为字符串并在列上使用pandas string manipulation methods。例如,要用列中的空字符串替换\xa0

exceldata['ID'] = exceldata['ID'].astype(str).str.replace(u'\xa0', '')
#                                ^^^^^^^^^^^^ potentially unnecessary, depending on the format of your data

这会将ID列替换为值的字符串表示形式,但删除了\xa0个字符。