我正在对比特币新闻进行情绪分析。在我编码期间,发生TypeError问题。希望您能帮助我,并非常感谢!
from newsapi.newsapi_client import NewsApiClient
from textblob import TextBlob
import pandas as pd
import numpy as np
from bs4 import BeautifulSoup
import datetime
from datetime import time
import csv
from dateutil import parser
api = NewsApiClient(api_key='my key')
all_articles = api.get_everything(q='bitcoin',
sources='bbc-news,the-verge,financial-times,metro,business-insider,reuters,bloomberg,cnbc,cbc-news,fortune,crypto-coins-news',
domains='bbc.co.uk,techcrunch.com',
from_param='2019-10-20',
to='2019-11-19',
language='en',
sort_by='relevancy',
page_size=100)
news= pd.DataFrame(all_articles['articles'])
news['polarity'] = news.apply(lambda x: TextBlob(x['description']).sentiment.polarity, axis=1)
news['subjectivity'] = news.apply(lambda x: TextBlob(x['description']).sentiment.subjectivity, axis=1)
news['date']= news.apply(lambda x: parser.parse(x['publishedAt']).strftime('%Y.%m.%d'), axis=1)
news['time']= news.apply(lambda x: parser.parse(x['publishedAt']).strftime('%H:%M'), axis=1)
然后发生此TypeError: imgur_link
答案 0 :(得分:0)
您需要调试代码。您正在传递None
值。
x['description']
中可能有一些None
值。
news['polarity'] = news.apply(lambda x: TextBlob(x['description']).sentiment.polarity, axis=1)
确保在预处理阶段,您的None
中没有NaN
或dataframe
值
答案 1 :(得分:0)
正如@Hayat正确指出的那样,description
列中的某些行具有None
值,这些值导致异常。共有四行,请参见下面的屏幕截图。
您应该删除这样的行,并对具有适当数据的行进行操作。您可以使用
过滤None
列中有description
的行
news_filtered = news[news['description'].notnull()]
news_filtered['polarity'] = news_filtered.apply(lambda x: TextBlob(x['description']).sentiment.polarity, axis=1)
您可能需要对其他列重复以上操作。