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

尝试将分词化响应合并到Pandas DataFrame时遇self._engine.get_loc报错求助

解决分词结果合并至DataFrame时的self._engine.get_loc(casted key)错误

这个错误本质是Pandas无法找到你指定的索引或列名,结合你“反分词后添加至DataFrame”的需求,可按以下步骤排查解决:

一、先完成反分词操作

将分词后的列表转为字符串,这是基础操作,示例代码:

# 场景1:DataFrame已有分词列(如'tokenized_content')
df['untokenized_content'] = df['tokenized_content'].apply(lambda x: ' '.join(x))

# 场景2:分词结果是外部列表(如tokenized_responses)
untokenized_list = [' '.join(tokens) for tokens in tokenized_responses]

二、排查错误核心原因及解决

- 原因1:索引长度不匹配

如果外部分词结果的长度和DataFrame的行数不一致,赋值时会触发索引匹配错误。
解决:
先检查长度是否一致:

print(len(untokenized_list) == len(df))  # 需返回True

若不一致,需确认分词结果是否遗漏或多生成了数据,调整后再赋值。

- 原因2:列名拼写错误或误用不存在的列

如果你是修改已有列而非新增列,列名拼写错误会触发“找不到键”的错误。
解决:

  • 新增列时直接使用合法列名即可(Pandas会自动创建)
  • 修改已有列时,先通过df.columns确认列名准确,示例:
print(df.columns)  # 查看所有列名,确保拼写完全一致
df['untokenized_content'] = untokenized_list  # 与列名严格匹配

- 原因3:索引标签不匹配

若你使用loc按索引标签赋值,但标签不存在于DataFrame中,也会触发该错误。
解决:
确保赋值用的索引标签在df的索引中存在,示例:

# 错误示例:索引100不存在
# df.loc[100, 'untokenized_content'] = 'xxx'

# 正确做法:使用现有索引或重置索引
df = df.reset_index(drop=True)  # 重置为连续整数索引
df.loc[:, 'untokenized_content'] = untokenized_list  # 全量赋值

三、完整正确示例

import pandas as pd

# 模拟数据
df = pd.DataFrame({'tokenized_content': [['我', '正', '尝试'], ['合', '并', '分词']]})

# 反分词并添加至DataFrame
df['untokenized_content'] = df['tokenized_content'].apply(lambda x: ' '.join(x))

print(df)

输出:

tokenized_content untokenized_content
0        [我, 正, 尝试]             我 正 尝试
1        [合, 并, 分词]             合 并 分词

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 10:22:47