python中的Lambda表达式无法提供正确的输出

时间:2019-08-06 15:36:01

标签: python

我正在研究机器学习问题,并且正在尝试编写lambda函数以从pandas列中删除标点符号,不幸的是lamda表达式无法正常工作

combi['tidy_tweet'] = combi['tidy_tweet'].apply(lambda x: x.replace("[^a-zA-Z#]", " "))

上面的表达式使列完整无缺,而我希望它能删除标点符号。

有人知道上面的lambda表达式有什么问题吗?

2 个答案:

答案 0 :(得分:4)

如果您需要用正则表达式替换,则需要import re并使用re.sub()而不是str.replace()

 ...lambda x: re.sub("[^a-zA-Z#]", "", x)

答案 1 :(得分:1)

您的lambda函数中的

x arg是一个纯字符串,它调用内置的str.replace方法,该方法不能在正则表达式模式下运行。 相反,您可以只应用带有regex味道的pandas.Series.replace函数:

combi['tidy_tweet'] = combi['tidy_tweet'].replace(r'[^a-zA-Z#]', ' ', regex=True)