无法遍历DataFrame列报错:'float' object is not subscriptable 求助
问题排查与解决
错误原因
报错"float' object is not subscriptable"的核心原因是:你的Ticket satisfaction comment列中存在空值(NaN,属于float类型)。当apply遍历到这些空值时,执行x[:500]相当于对float类型的NaN做切片操作,这在Python里是不允许的,所以触发了错误。
解决方案
第一步:处理列中的空值
先确认空值数量,再选择合适的处理方式:
# 查看空值总数 print(df['Ticket satisfaction comment'].isna().sum()) # 方式1:直接删除含空值的行(适合空值占比低的情况) df = df.dropna(subset=['Ticket satisfaction comment']) # 方式2:将空值替换为空字符串(适合需要保留行的情况) df['Ticket satisfaction comment'] = df['Ticket satisfaction comment'].fillna('')
第二步:给评分函数加容错逻辑
修改sentiment_score函数,提前过滤非字符串输入,避免后续再触发同类错误:
def sentiment_score(comment): # 若输入不是字符串(比如NaN、数字),转为空字符串 if not isinstance(comment, str): comment = '' # 截取前500字符(空字符串切片无影响) tokens = tokenizer.encode(comment[:500], return_tensors='pt') result = model(tokens) return int(torch.argmax(result.logits)) + 1
第三步:重新运行apply
df["sentiment"] = df['Ticket satisfaction comment'].apply(sentiment_score)
内容的提问来源于stack exchange,提问作者user18416292
相关产品推荐
相关产品推荐

