热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何在数据框中彻底移除特定字符

在处理数据框时,常见的需求是从Excel文件中读取数据,并清除所有字段中的特定字符,如分号。由于列中可能包含多种数据类型,直接操作可能会引发AttributeError。为避免此类错误,建议使用Pandas库中的`applymap`方法,结合自定义函数来实现字符的高效移除。

我需要对熊猫执行的常见操作是从Excel文件中读取表格,然后从所有字段中删除分号.这些列通常是混合数据类型,在尝试执行以下操作时遇到了AtributeError:

for col in cols_to_check:
df[col] = df[col].map(lambda x: x.replace(';',''))

AttributeError: ‘float’ object has no attribute ‘replace’


当我在替换之前将其包装在str()中时,Unicode字符有问题,例如

for col in cols_to_check:
df[col] = df[col].map(lambda x: str(x).replace(';',''))

UnicodeEncodeError: ‘ascii’ codec can’t encode character u’\xe9′ in position 3: ordinal not in range(128)


在excel中这是一个非常简单的操作,只需替换即可;用空字符串.无论数据类型如何,我如何在整个数据帧中以类似的方式在熊猫中执行此操作?还是我错过了什么?

解决方法:

您可以使用DataFrame.replace并选择使用子集:

df = pd.DataFrame({'A':[1,2,3],
'B':[4,5,6],
'C':['f;','d:','sda;sd'],
'D':['s','d;','d;p'],
'E':[5,3,6],
'F':[7,4,3]})
print (df)
A B C D E F
0 1 4 f; s 5 7
1 2 5 d: d; 3 4
2 3 6 sda;sd d;p 6 3
cols_to_check = ['C','D', 'E']
print (df[cols_to_check])
C D E
0 f; s 5
1 d: d; 3
2 sda;sd d;p 6
df[cols_to_check] = df[cols_to_check].replace({';':''}, regex=True)
print (df)
A B C D E F
0 1 4 f s 5 7
1 2 5 d: d 3 4
2 3 6 sdasd dp 6 3


推荐阅读
author-avatar
Jamie-逗比
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有