2016-06-30 32 views
0

我正在嘗試通過熊貓數據框上收集的評論列表,並標記這些單詞並將這些單詞放入數據框的新列中,但運行時出現錯誤通過這個,是將單詞轉化爲熊貓數據框中的新列

的錯誤,指出At​​tributeError的:「統一」對象有沒有屬性「apwords」

是否有任何其他方式做到這一點?由於

def apwords(words): 
    filtered_sentence = [] 
    words = word_tokenize(words) 
    for w in words: 
     filtered_sentence.append(w) 
    return filtered_sentence 
addwords = lambda x: x.apwords() 
df['words'] = df['complaint'].apply(addwords) 
print df 

回答

0

你的應用lambda功能是正確的方法,它是你定義addwords不工作的方式。

當你定義apwords你定義一個function不是attribute因此當你要應用它,使用:

addwords = lambda x: apwords(x) 

而不是:

addwords = lambda x: x.apwords() 

如果你想使用apwords爲屬性,您需要定義從string繼承的class並將apwords定義爲此類中的屬性。

要容易得多留在function

def apwords(words): 
    filtered_sentence = [] 
    words = word_tokenize(words) 
    for w in words: 
     filtered_sentence.append(w) 
    return filtered_sentence 
addwords = lambda x: apwords(x) 
df['words'] = df['complaint'].apply(addwords) 
+0

我試圖做什麼你和若昂·阿爾梅達建議,但我得到一個類型錯誤:預期字符串或現在緩衝區,是因爲像你說什麼,我必須定義一個繼承自字符串的類並執行我的原始方法?謝謝 – user3655574

+0

不,它必須意味着在你的'df''怨聲'中''你有別的東西比字符串。如果你使用'df.dtypes',你必須在'抱怨'前面有'object'類型嗎?我認爲,最有可能的是你缺少值(不是字符串),然後在應用'addwords'類型'df ['complaints'] = df ['complaints']。fillna('')'' nan'值由空字符串。 – ysearka

0

你不只是要做到這一點:

df['words'] = df['complaint'].apply(apwords) 

你不需要定義功能addwords。這應該被定義爲:

addwords = lambda x: apwords(x) 
相關問題