我有一个数据框,其中包含一个包含文本的列。我想应用 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 应用于数据框中列的每一行以获取情绪值?
最佳答案
您可以使用 .apply :
df['sentiment'] = df['text'].apply(lambda tweet: TextBlob(tweet).sentiment)
Sentiment 返回 Sentiment(polarity, subjectivity) 形式的命名元组。
但是你确定 df['text']
的每一行都是字符串格式吗?如果不是,您可以在下面尝试返回 None
如果 TextBlob 无法处理文本:
def sentiment_calc(text):
try:
return TextBlob(text).sentiment
except:
return None
df['sentiment'] = df['text'].apply(sentiment_calc)
关于python - 为数据框的每一行应用 textblob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43485469/