You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

处理CSV评论情感分析时出现'float' object is not subscriptable错误

问题原因分析

错误根源在这行代码:df['Review_Sentiment']=df['sentiment'].apply(Review_To_Sent)

你调用df['sentiment'].apply()时,是把sentiment列的每个单独浮点值传给Review_To_Sent函数的row参数,而非DataFrame的整行数据。此时row是float类型,用row['sentiment']做下标访问自然会触发“float对象不可下标”的错误。

修复方案

两种简洁的修复方式,任选其一即可:

方案一:修改函数适配单个数值

把Review_To_Sent改成直接处理单个浮点值的逻辑,无需行下标访问:

def Review_To_Sent(polarity):
    if polarity < -0.05 :
        return 'negative'
    if polarity > 0.05 :
        return 'positive'
    else:
        return 'neutral'
# 保持原apply调用不变
df['Review_Sentiment']=df['sentiment'].apply(Review_To_Sent)

方案二:按整行调用apply

如果想保留函数里按行访问的逻辑,改为对整个DataFrame调用apply并指定axis=1(按行处理):

# 函数逻辑无需修改
def Review_To_Sent(row):
   if row ['sentiment'] < -0.05 :
      return 'negative'
   if row['sentiment'] > 0.05 :
      return 'positive'
   else:
      return 'neutral'
# 修改apply调用对象为整个df,指定axis=1
df['Review_Sentiment']=df.apply(Review_To_Sent, axis=1)
额外优化建议
  • 可以用numpy.where简化情感标注逻辑,避免自定义函数,代码更高效简洁:
import numpy as np

df['Review_Sentiment'] = np.where(df['sentiment'] < -0.05, 'negative',
                                  np.where(df['sentiment'] > 0.05, 'positive', 'neutral'))
  • 记得在代码开头补充导入:from textblob import TextBlob,否则会触发NameError。

内容的提问来源于stack exchange,提问作者gia blum

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 14:40:15