【问题标题】:Remove punctuations in pandas [duplicate]删除熊猫中的标点符号[重复]
【发布时间】:2017-02-08 11:52:20
【问题描述】:
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。任何建议都会有所帮助。

【问题讨论】:

  • 您想要一个具有相同字符串值但没有标点符号的新列?为什么?
  • @JoeR 我正在对数据进行情感分析

标签: python string pandas replace


【解决方案1】:

使用Pandas str.replace 和正则表达式:

df["new_column"] = df['review'].str.replace('[^\w\s]','')

【讨论】:

  • @ Bob Haffner,谢谢你,但我将如何保留以前存在的空间?
【解决方案2】:

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

df['review'].str.replace('[{}]'.format(string.punctuation), '')

【讨论】:

    【解决方案3】:

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

    def remove_punctuations(text):
        for punctuation in string.punctuation:
            text = text.replace(punctuation, '')
        return text
    

    您可以像以前一样调用该函数,它应该可以工作。

    df["new_column"] = df['review'].apply(remove_punctuations)
    

    【讨论】:

      猜你喜欢
      • 2016-01-07
      • 1970-01-01
      • 2019-11-14
      • 1970-01-01
      • 2020-08-11
      • 2021-01-11
      • 2016-01-30
      • 1970-01-01
      • 2013-10-28
      相关资源
      最近更新 更多