使用polyglot做情感分析调用pandas apply时报function对象不可下标错如何解决
问题修复方案
报错根因
你遇到的TypeError: 'function' object is not subscriptable报错和你定义的sentiment函数本身无关,核心问题是变量名冲突:
你用来承接pandas DataFrame的变量名text,和你代码中提前定义/导入的某个同名函数重名了,当你执行text["sentiment"]按下标取值时,程序将text识别为函数,而函数本身不支持[]下标操作,因此抛出错误。
你可以先执行print(type(text))验证,如果输出为<class 'function'>即可确认是该问题。
修复步骤
- 优先修改DataFrame的变量名,避免和其他函数/对象重名,比如改为通用的
df:
# 将原来给text赋值DataFrame的代码替换为如下格式,示例如下 import pandas as pd df = pd.read_csv("你的数据源路径.csv") # 替换为你自己的DataFrame生成逻辑 # 执行apply操作即可正常运行 df["sentiment"] = df["word"].apply(sentiment)
- 如果你需要把
sentiment函数返回的两个结果分别存储为单独的列,可以直接拆分返回的元组,不需要修改原有函数:
# 写法1:轻量数据场景适用 df[["text_obj", "polarity"]] = df["word"].apply(sentiment).apply(pd.Series) # 写法2:大数据量场景性能更优 df["text_obj"], df["polarity"] = zip(*df["word"].apply(sentiment))
内容的提问来源于stack exchange,提问作者brygid
相关产品推荐
相关产品推荐

