首页 > 解决方案 > 如何迭代列表并通过 pandas 数据框列获取情绪?

问题描述

How to iterate the list and get the sentiments through pandas dataframe column?

我有一个只有一列的数据框,并且该列中只有评论。

data.head()

输出 :

    Review
0   If you've ever been to Disneyland anywhere you...
1   Its been a while since d last time we visit HK...
2   Thanks God it wasn t too hot or too humid wh...
3   HK Disneyland is a great compact park. Unfortu...
4   the location is not in the city, took around 1...

我正在使用拥抱面部情绪分类器,例如返回评论的情绪

classifier("My name is mark")

输出是:

[{'label': 'POSITIVE', 'score': 0.9953688383102417}]

仅获取标签:

basic_sentiment = [i['label'] for i in value if 'label' in i]
basic_sentiment

输出是:

['POSITIVE']

如何在分类器的数据框中运行所有给定的注释并返回输出?

sent = []

for i in text[:]:
  sentiment = classifier(i)
  sent.append(sentiment)

我尝试了上面的代码,但它返回错误

标签: pythonpandaslistdataframesentiment-analysis

解决方案


我了解您的问题是遍历熊猫数据框,而不仅仅是label从分类器返回。

如果要返回带有分类器()结果的列表,则需要:

sent = []

for i in range(len(data)):
    sentiment = classifier(data.iloc[i,0])
    sent.append(sentiment)

range(len(data))遍历数据框的所有行。data.iloc[i,0]从第 i 行和第 0 列中获取值(您只有一列,python 是零索引的)。

您还可以将分类器的结果保存在另一列中,这样您就有一个包含两列的数据框,一列包含纯文本,另一列包含情绪:

# initialize new column
data['Sentiment'] = ''

for i in range(len(data)):
    data.iloc[i,1] = classifier(data.iloc[i,0])

Wheredata.iloc[i,1]以第 i 行和索引为 1 的列为目标,这是您的第二列(零索引)Sentiment

如果您只想保存label您需要将该步骤插入代码中,但是您并不清楚您要保存什么。


推荐阅读