2016-09-30 13 views
2
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

あなたは同じ文字列値を含む新しい列を持っていると思いますが、句読点なしで?どうして? –

+1

@JoeR私はデータのセンチメント分析を実践しています – vikky

答えて

4

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

私はあなたがやったのと同じ方法関数を呼び出すことができますし、それが動作するはずstring.punctuationを通じて

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

をループすることにより、問題を解決しました。

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

をあなたがstringモジュールの句読点のリストを使用して正規表現を構築することができます:Pandas str.replaceと正規表現を使用して

df["new_column"] = df['review'].apply(remove_punctuations) 
関連する問題