建立
出于演示的目的,让我们考虑一下这个DataFrame.
df = pd.DataFrame({'text':['a..b?!??', '%hgh&12','abc123!!!', '$$$1234']})
df
text
0 a..b?!??
1 %hgh&12
2 abc123!!!
3 $$$1234
下面,我逐一列出替代方案,以提高性能
str.replace
包含此选项可将默认方法建立为比较其他更高性能解决方案的基准.
这使用pandas内置的str.replace函数,它执行基于正则表达式的替换.
df['text'] = df['text'].str.replace(r'[^\w\s]+', '')
df
text
0 ab
1 hgh12
2 abc123
3 1234
这很容易编码,并且可读性很强,但速度很慢.
regex.sub
这涉及使用re库中的sub函数.为性能预编译正则表达式模式,并在列表解析中调用regex.sub.如果你可以节省一些内存,事先将df [‘text’]转换为一个列表,你将获得一个很好的性能提升.
import re
p = re.compile(r'[^\w\s]+')
df['text'] = [p.sub('', x) for x in df['text'].tolist()]
df
text