对textframe的每一行应用textblob

时间:2017-04-19 02:47:39

标签: python pandas textblob

我有一个带有文本的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的每一行以获取情绪值?

1 个答案:

答案 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)