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

替换genre_ids时出现KeyError: '['错误,求解决方法

解决KeyError: '['问题

问题原因

你的genre_ids列存储的不是Python列表,而是字符串格式的列表(比如值为"[28,16]")。直接遍历这个字符串时,会把它拆成单个字符('['、'2'、'8'等),而你的id_code字典里没有'['这个键,所以触发KeyError。

解决方案

方法1:用ast.literal_eval解析字符串为列表

先把字符串格式的列表转换成真正的Python列表,再映射类型名称:

import ast

id_code = {'28': 'action', '12': 'adventure', '16': 'animation'}

merged_df['genre_ids'] = merged_df['genre_ids'].apply(
    lambda x: [id_code[str(i)] for i in ast.literal_eval(x)]
)
  • ast.literal_eval会安全地把字符串解析成对应的Python数据结构(这里是列表)
  • 把列表里的数字转成字符串,匹配id_code的键类型

方法2:纯字符串处理(无需额外模块)

如果你的字符串格式很规范(比如没有多余空格),可以直接处理字符串:

id_code = {'28': 'action', '12': 'adventure', '16': 'animation'}

merged_df['genre_ids'] = merged_df['genre_ids'].apply(
    lambda x: [id_code[i.strip()] for i in x.strip('[]').split(',')]
)
  • x.strip('[]')去掉字符串首尾的[],得到"28,16"
  • split(',')按逗号分割成["28", "16"]
  • i.strip()处理可能存在的空格(比如如果是"28, 16")

可选:处理未知ID

如果列中有不在id_code里的ID,可以用get方法设置默认值,避免报错:

# 以方法1为例
merged_df['genre_ids'] = merged_df['genre_ids'].apply(
    lambda x: [id_code.get(str(i), 'unknown') for i in ast.literal_eval(x)]
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 11:50:23