2016-01-11 75 views
1

我面對這個屬性錯誤,我被困在如何處理浮動值,如果他們出現在tweet.The流tweet必須降低和標記化所以我使用了分割功能。AttributeError:'float'對象沒有屬性'lower'

有人可以幫我解決它,任何解決方法或解決方案..?

這裏的錯誤其中M剛開....

AttributeError       Traceback (most recent call last) 
<ipython-input-28-fa278f6c3171> in <module>() 
     1 stop_words = [] 
----> 2 negfeats = [(word_feats(x for x in p_test.SentimentText[f].lower().split() if x not in stop_words), 'neg') for f in l] 
     3 posfeats = [(word_feats(x for x in p_test.SentimentText[f].lower().split() if x not in stop_words), 'pos') for f in p] 
     4 
     5 trainfeats = negfeats+ posfeats 

AttributeError: 'float' object has no attribute 'lower' 

這裏是我的代碼

p_test = pd.read_csv('TrainSA.csv') 

stop_words = [ ] 

def word_feats(words): 

    return dict([(word, True) for word in words]) 


l = [ ] 

for f in range(len(p_test)): 

    if p_test.Sentiment[f] == 0: 

     l.append(f) 



p = [ ] 

for f in range(len(p_test)): 

    if p_test.Sentiment[f] == 1: 

     p.append(f) 




negfeats = [(word_feats(x for x in p_test.SentimentText[f].lower().split() if x not in stop_words), 'neg') for f in l] 

posfeats = [(word_feats(x for x in p_test.SentimentText[f].lower().split() if x not in stop_words), 'pos') for f in p] 


trainfeats = negfeats+ posfeats 

print len(trainfeats) 


import random 

random.shuffle(trainfeats) 

print(len(trainfeats)) 




p_train = pd.read_csv('TrainSA.csv') 


l_t = [] 

for f in range(len(p_train)): 

    if p_train.Sentiment[f] == 0: 

     l_t.append(f) 


p_t = [] 

for f in range(len(p_train)): 

    if p_train.Sentiment[f] == 1: 

     p_t.append(f)   

print len(l_t) 

print len(p_t) 

我嘗試了很多方法,但仍然無法讓它們使用較低和分割功能。

+2

顯然'p_test.SentimentText [f]'是一個浮點數,而不是一個字符串。你不能在float上調用'lower()'。 – Kevin

+0

它通常有助於包含帶有追溯的實際錯誤文本,而不是僅提及它 - 否則人們必須猜測錯誤可能來自哪裏。 – Lav

回答

3

我感覺你的問題在pd.read_csv('TrainSA.csv')函數中有根。雖然你沒有發佈這個例程,我認爲它是熊貓read_csv。該例程智能地將輸入轉換爲python數據類型。然而這意味着在你的情況下,一些值可以被轉換爲浮點數。您可以通過爲每列指定您期望的數據類型來防止這種智能(?)行爲。

3

謝謝@Dick Kniep ...是的,它是熊貓csv閱讀器。您的建議worked.Following代碼爲我工作由指定字段的數據類型...

p_test = pd.read_csv('TrainSA.csv') 
p_test.SentimentText=p_test.SentimentText.astype(str) 
0

我得到了類似的錯誤與我的數據集。安裝dtype參數沒有幫助我。我必須準備我的數據集。問題出在NaN列值。數據集部分:

Id,Category,Text 
1,contract,"Some text with commas , and other " 
2,contract, 

所以我的解決辦法:read_csv之前,我準備我添加虛擬的文本,而不是空行:

Id,Category,Text 
1,contract,"Some text with commas , and other " 
2,contract,"NaN" 

現在我的應用程序工作正常。