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

替换genre_ids列数字ID为对应类型名称失败如何解决?

实现genre_ids数字ID到类型名称的映射替换

首先先构建ID和类型名的对应映射字典,你可以根据自己的实际对应规则补全所有键值对:

# 示例映射规则,可自行增删调整
genre_map = {
    28: "action",
    12: "adventure",
    16: "animation",
    35: "comedy",
    80: "crime",
    99: "documentary",
    18: "drama",
    10751: "family",
    14: "fantasy",
    36: "history",
    27: "horror",
    10402: "music",
    9648: "mystery",
    10749: "romance",
    878: "science fiction",
    10770: "tv movie",
    53: "thriller",
    10752: "war",
    37: "western"
}

根据你genre_ids列的存储格式,选对应的处理方法即可:

  • 若列中每行是单个数字ID:直接用pandas的replace方法完成替换,注意保证字典key的类型和列中ID的类型一致(如果列中ID是字符串格式,就把字典key改成对应的字符串,比如"28": "action")
import pandas as pd
# 假设你的数据集DataFrame变量名为df
df["genre_name"] = df["genre_ids"].replace(genre_map)
  • 若列中每行是ID组成的列表(比如[28, 12, 878]这种单条数据对应多个类型的格式,也是影视类数据集最常见的存储形式):需要遍历列表内的每个ID做映射,直接用replace无法生效
# 映射后得到类型名称组成的列表,找不到对应映射的ID会标记为unknown
df["genre_names"] = df["genre_ids"].apply(lambda id_list: [genre_map.get(gid, "unknown") for gid in id_list])

常见坑点:如果你的genre_ids列存的是字符串格式的列表(比如打印出来是"[28, 12]"的字符串,而非原生Python列表),要先做格式转换再执行映射,转换代码如下:

import ast
df["genre_ids"] = df["genre_ids"].apply(ast.literal_eval)

如果替换后出现大量unknown,先检查ID的数据类型是否和映射字典的key类型匹配(数字型ID和字符串型ID不会被识别为同一个key),再补全缺失的映射关系即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 03:09:28