为数据框的每一行应用 textblob

Apply textblob in for each row of a dataframe

我有一个带有文本列的数据框。我想应用 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 return是 Sentiment(polarity, subjectivity) 形式的命名元组。

但是你确定df['text']的每一行都是字符串格式吗?如果没有,您可以尝试以下 return None 如果 TextBlob 无法处理文本:

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

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