我正在尝试对选择的数据集运行情绪分析,但每次我都会收到此错误:KeyError: 0
供参考,这是我正在使用的代码:
OC = df[df["text"].str.contains("Obamacare")]
from textblob import TextBlob
import re
def clean_tweet(tweet):
return " ".join(re.sub("(@[A-Za-z0-9]+)|([^0-9A-Za-z \t])|(\w+:\/\/\S+)", " ", tweet).split())
def analize_sentiment(tweet):
analysis = TextBlob(clean_tweet(tweet))
if analysis.sentiment.polarity > 0:
return 1
elif analysis.sentiment.polarity == 0:
return 0
else:
return -1
df["sentiment"] = np.array([ analize_sentiment(tweet) for tweet in df["text"]])
pos_tweets = [tweet for index, tweet in enumerate(OC['text']) if OC['sentiment'][index] > 0]
neu_tweets = [ tweet for index, tweet in enumerate(OC['text']) if OC['sentiment'][index] == 0]
neg_tweets = [ tweet for index, tweet in enumerate(OC['text']) if OC['sentiment'][index] < 0]
在我尝试运行pos_tweets
,neu_tweets
,neg_tweets
后,我不断获得Key Error: 0
答案 0 :(得分:0)
我不确定你在列举什么,或者为什么这是情绪分析的一部分。我就这样做了......
def clean(tweet):
return " ".join(re.sub("(@[A-Za-z0-9]+) | ([^0-9A-Za-z\t]) | (w+:\/\/\s+)", " ", tweet).split())
def sentiment_analysis(tweet):
analysis = TextBlob(clean(tweet))
if analysis.sentiment.polarity > 0:
return 1
elif analysis.sentiment.polarity == 0:
return 0
else:
return -1
df["sentiment"] = np.array([sentiment_analysis(tweet) for tweet in
df["text"]])
df["OC"] = df.text.str.contains("obamacare", case = False)
df2 = df.loc[df["OC"] == True]
df2.sentiment.value_counts()
我基本上只是对整个df运行你的列表理解,然后进行解析。