python - 为数据框的每一行应用 textblob

标签 python pandas 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 应用于数据框中列的每一行以获取情绪值?

最佳答案

您可以使用 .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/

相关文章:

python setup.py - 安装后如何显示消息

python - 在 csv 文件中搜索列中的特定项目

python - Python中删除多列中的非中文元素

python - 如何提取葡萄牙语的名词/动词短语?

python - 使用 Popen 执行脚本失败

python - 在 Pandas 中按项目分组并每小时计算项目数

python - 仅相似列上的两个数据框的 Pandas 平均值

python textblob和文本分类

python.无法导入名称 'TextBlob'

python - 如何使用 Python 将带有引号和换行符的字符串插入到 sqlite 数据库中?