如何对Pandas行应用NLTK情感分析函数并拆分字典为多列
解决方法:将情感极性字典拆分到DataFrame列中
我之前也碰到过一模一样的需求,其实不用手动遍历行这么麻烦,用Pandas的apply配合pd.Series()就能轻松搞定,效率还高!直接看实操步骤:
首先确保你已经导入了需要的库:
import pandas as pd from nltk.sentiment import SentimentIntensityAnalyzer
初始化情感分析器:
sia = SentimentIntensityAnalyzer()
接下来是核心操作——把每一行的情感得分字典直接转成DataFrame列,再和原数据集合并:
# 对body列的每条语料计算情感得分,将返回的字典转为Series(自动以字典键为列名) sentiment_df = joined_corpus['body'].apply(lambda text: pd.Series(sia.polarity_scores(text))) # 把情感得分列合并到原DataFrame中 joined_corpus = pd.concat([joined_corpus, sentiment_df], axis=1)
做完这两步,你的joined_corpus就会自动新增neg、neu、pos、compound四列,每一行的得分和原语料完全对应上。
额外小贴士
如果你的body列存在空值(比如NaN或者空字符串),建议先做个填充处理,避免分析器报错:
# 把空值填充为空白字符串,确保分析器能正常处理 joined_corpus['body'] = joined_corpus['body'].fillna('')
这种方法比手动循环高效太多,尤其是数据量较大的时候,完全不用一行行去处理~
内容的提问来源于stack exchange,提问作者Parseltongue
相关产品推荐
相关产品推荐

