删除熊猫中的标点符号

vik*_*kky 13 python string replace pandas

code: df['review'].head()
        index         review
output: 0      These flannel wipes are OK, but in my opinion
Run Code Online (Sandbox Code Playgroud)

我想从数据框的列中删除标点符号并创建一个新列.

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'
Run Code Online (Sandbox Code Playgroud)

我正在使用python 2.7.任何的意见都将会有帮助.

Bob*_*ner 25

使用Pandas str.replace和regex:

df["new_column"] = df['review'].str.replace('[^\w\s]','')
Run Code Online (Sandbox Code Playgroud)


Dav*_*d C 11

您可以使用string模块的标点符号列表构建正则表达式:

df['review'].str.replace('[{}]'.format(string.punctuation), '')
Run Code Online (Sandbox Code Playgroud)

  • 使用“导入字符串” (2认同)

小智 8

我通过循环遍历 string.punctuation 解决了这个问题

def remove_punctuations(text):
    for punctuation in string.punctuation:
        text = text.replace(punctuation, '')
    return text
Run Code Online (Sandbox Code Playgroud)

您可以按照相同的方式调用该函数,它应该可以工作。

df["new_column"] = df['review'].apply(remove_punctuations)
Run Code Online (Sandbox Code Playgroud)