我有一个带有文本的col的数据框。我想应用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的每一行以获取情绪值?
答案 0 :(得分:9)
您可以使用.apply:
df['sentiment'] = df['text'].apply(lambda tweet: TextBlob(tweet).sentiment)
Sentiment返回形式为Sentiment(极性,主观性)的命名元组。
但是你确定df['text']
的每一行都是字符串格式吗?如果没有,如果TextBlob无法处理文本,您可以尝试下面的方法返回None
:
def sentiment_calc(text):
try:
return TextBlob(text).sentiment
except:
return None
df['sentiment'] = df['text'].apply(sentiment_calc)