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

如何将DataFrame中的演员名称转换为唯一数字标识?

演员名称转唯一数字映射方案

核心思路

用pandas内置的向量化操作快速生成演员与唯一数字的映射,同时构建反向查询字典,替代低效的循环列表实现。

步骤与代码示例

假设你的DataFrame名为df,其中actor列存储演员名称,movie列存储电影名称:

  1. 提取所有唯一演员
    从DataFrame中获取不重复的演员列表,作为生成映射的基础:

    unique_actors = df['actor'].unique()
    
  2. 创建正向映射字典(演员→数字)
    通过枚举给每个唯一演员分配专属数字(示例从1开始编号,可按需改为从0开始):

    actor_to_id = {actor: idx + 1 for idx, actor in enumerate(unique_actors)}
    
  3. 转换DataFrame中的演员列
    将原演员名称替换为对应数字,重复演员会自动映射到同一编号:

    df['actor_id'] = df['actor'].map(actor_to_id)
    
  4. 生成反向查询字典(数字→演员)
    反转正向字典,方便后续通过数字查询对应演员:

    id_to_actor = {v: k for k, v in actor_to_id.items()}
    

特殊情况处理(演员列为列表)

如果actor列是单部电影对应多个演员的列表格式,先展开列表再提取唯一演员:

# 展开列表,将每个演员单独成行
exploded_df = df.explode('actor')
unique_actors = exploded_df['actor'].unique()
# 后续映射步骤与上述一致

用于NetworkX绘图

转换完成后,用actor_id和movie作为节点构建图,避免因名称过长导致图形混乱:

import networkx as nx

G = nx.Graph()
# 添加电影和演员节点
G.add_nodes_from(df['movie'], node_type='movie')
G.add_nodes_from(df['actor_id'], node_type='actor')
# 添加电影-演员关联边
edges = list(zip(df['movie'], df['actor_id']))
G.add_edges_from(edges)

# 按需调整绘图参数
nx.draw(G, with_labels=True, node_size=500, font_size=8)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 16:18:34