我正在研究机器学习问题,并且正在尝试编写lambda函数以从pandas列中删除标点符号,不幸的是lamda表达式无法正常工作
combi['tidy_tweet'] = combi['tidy_tweet'].apply(lambda x: x.replace("[^a-zA-Z#]", " "))
上面的表达式使列完整无缺,而我希望它能删除标点符号。
有人知道上面的lambda表达式有什么问题吗?
答案 0 :(得分:4)
如果您需要用正则表达式替换,则需要import re
并使用re.sub()
而不是str.replace()
:
...lambda x: re.sub("[^a-zA-Z#]", "", x)
答案 1 :(得分:1)
x
arg是一个纯字符串,它调用内置的str.replace
方法,该方法不能在正则表达式模式下运行。
相反,您可以只应用带有regex
味道的pandas.Series.replace
函数:
combi['tidy_tweet'] = combi['tidy_tweet'].replace(r'[^a-zA-Z#]', ' ', regex=True)