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

使用SentenceTransformers处理pandas Series时触发KeyError报错求助

解决SentenceTransformer处理pandas Series时的KeyError问题

问题原因

SentenceTransformer.encode()方法内部对句子按长度排序时,会生成连续的0-based位置索引(比如报错里的144),然后用这些索引去访问输入的sentences对象。但如果你的pandas Series的索引不是连续的整数(比如索引存在缺失、被修改过,或是非整数类型),就会触发KeyError——因为Series会把传入的数字当作索引键去查找,而不是按位置取元素。

解决方案

以下是三种直接可行的解决方式:

1. 将Series转换为普通列表(推荐)

直接把Series转成Python列表,让encode()按位置访问元素,完全避开索引问题:

from sentence_transformers import SentenceTransformer
model = SentenceTransformer('sentence-transformers/all-MiniLM-L6-v2')

# 转换为列表后传入
embeddings = model.encode(sentences.tolist())

2. 重置Series的索引为连续整数

如果需要保留Series结构,可以先重置索引,生成从0开始的连续整数索引:

sentences_reset = sentences.reset_index(drop=True)
embeddings = model.encode(sentences_reset)

3. 使用iloc按位置访问(兼容Series结构)

利用pandas的iloc属性强制按位置取元素,传入iloc[:]生成一个可按位置访问的对象:

embeddings = model.encode(sentences.iloc[:])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 11:18:13