我正在处理从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数据帧,这就是让我失望的部分。
答案 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
个字符。