Применить метод в Pandas не может обработать функцию - PullRequest
0 голосов
/ 18 апреля 2019

Я новичок в пандах.Ниже приводится подмножество фрейма данных с именем news: Id - это идентификатор новости, а текстовый столбец содержит новости:

Id             text
1              the news is really bad.
2              I do not have any courses.
3              Asthma is very prevalent.
4              depression causes disability.

Я собираюсь рассчитать настроение для каждой новости в столбце "текст".Мне нужно создать столбец для включения результатов анализа настроений.

Это мой код:

    from textblob import TextBlob
    review = TextBlob(news.loc[0,'text'])
    print (review.sentiment.polarity)

Этот код работает только для одной из новостей в текстовом столбце.

Я также написал эту функцию:

    def detect_sentiment(text):

        blob = TextBlob(text)
        return blob.sentiment.polarity

news['sentiment'] = news.text.apply(detect_sentiment)

Но в ней есть следующая ошибка:

The `text` argument passed to `__init__(text)` must be a string, not <class 'float'>

Любое решение?

1 Ответ

0 голосов
/ 19 апреля 2019

Я не могу воспроизвести вашу ошибку: ваш точный код работает отлично для меня, используя pandas==0.24.2 и Python 3.4.3:

import pandas as pd
from textblob import TextBlob

news = pd.DataFrame(["the news is really bad.",
                   "I do not have any courses.",
                   "Asthma is very prevalent.",
                   "depression causes disability."], columns=["text"])

def detect_sentiment(text):
    blob = TextBlob(text)
    return blob.sentiment.polarity

news['sentiment'] = news.text.apply(detect_sentiment)

display(news)

Результат:

+----+-------------------------------+-------------+
|    | text                          |   sentiment |
|----+-------------------------------+-------------|
|  0 | the news is really bad.       |        -0.7 |
|  1 | I do not have any courses.    |         0   |
|  2 | Asthma is very prevalent.     |         0.2 |
|  3 | depression causes disability. |         0   |
+----+-------------------------------+-------------+
...