2017-04-19 40 views
1

我有一個帶有文本的列的數據框。我想申請textblob並計算每行的情緒值。將textblob應用於數據幀的每一行

text    sentiment 

這是偉大的
偉大的電影 偉大的故事

當我執行下面的代碼:

df['sentiment'] = list(map(lambda tweet: TextBlob(tweet), df['text']))

我得到的錯誤:

TypeError: The `text` argument passed to `__init__(text)` must be a string, not <class 'float'> 

如何你是否將textBLob應用於數據框中col的每一行以獲得情感值?

回答

1

您可以使用.apply

df['sentiment'] = df['text'].apply(lambda tweet: TextBlob(tweet).sentiment) 

情緒返回的形式情緒(極性,主體)的namedtuple。

但你確定df['text']的每一行是字符串格式嗎?如果沒有,如果文本無法通過TextBlob處理,則可以嘗試在下面返回None

def sentiment_calc(text): 
    try: 
     return TextBlob(text).sentiment 
    except: 
     return None 

df['sentiment'] = df['text'].apply(sentiment_calc) 
+0

謝謝第二個人工作。 – user2585048

相關問題