code: df['review'].head()
index review
output: 0 These flannel wipes are OK, but in my opinion
我想从数据框的列中删除标点符号并创建一个新列。
code: import string
def remove_punctuations(text):
return text.translate(None,string.punctuation)
df["new_column"] = df['review'].apply(remove_punctuations)
Error:
return text.translate(None,string.punctuation)
AttributeError: 'float' object has no attribute 'translate'
我正在使用python 2.7。任何建议都会有所帮助。
答案 0 :(得分:18)
使用Pandas str.replace和正则表达式:
df["new_column"] = df['review'].str.replace('[^\w\s]','')
答案 1 :(得分:8)
您可以使用string
模块的标点符号列表构建正则表达式:
df['review'].str.replace('[{}]'.format(string.punctuation), '')
答案 2 :(得分:3)
我通过循环遍历string.punctuation
解决了这个问题<h3 id="test">Title: {{title}}</h3>
您可以按照您的方式调用该功能,它应该可以正常工作。
def remove_punctuations(text):
for punctuation in string.punctuation:
text = text.replace(punctuation, '')
return text