2016-09-30 50 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

使用Pandas str.replace和正則表達式:

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

我通過了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) 
0

可以使用string模塊的標點符號列表構建一個正則表達式:

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