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

pandas按actor_link分组聚合movie_link为列表的实现方法

Pandas按演员分组聚合参演电影链接问题

问题背景

现有结构为name, actor_link, movie_link的DataFrame,需要按actor_link字段分组,输出包含name、actor_link、演员参演电影链接列表三个字段的结果。

示例输入

Tom Hanks,https://www.csfd.cz/tvurce/330-tom-hanks/,https://www.csfd.cz/film/10135-forrest-gump/
Tom Hanks,https://www.csfd.cz/tvurce/330-tom-hanks/,https://www.csfd.cz/film/2292-zelena-mile/

期望输出

Tom Hanks,https://www.csfd.cz/tvurce/330-tom-hanks/,[https://www.csfd.cz/film/10135-forrest-gump/,https://www.csfd.cz/film/2292-zelena-mile/]

现存问题

当前编写的代码输出存在错误,电影链接列表中混入了演员姓名,错误输出如下:

Tom Hanks,https://www.csfd.cz/tvurce/330-tom-hanks/,"['Tom Hanks', 'https://www.csfd.cz/film/10135-forrest-gump/', 'Tom Hanks', 'https://www.csfd.cz/film/2292-zelena-mile/']"

当前使用的代码:

original_actor_df = pd.read_csv('actors.csv')
actor_movies_df = original_actor_df.set_index("actor_link").stack().groupby(level=0).apply(list).reset_index(name="movies")
original_actor_df.drop(['movie_link'], axis=1, inplace=True)
original_actor_df.drop_duplicates(inplace=True)
actor_df = pd.merge(original_actor_df, actor_movies_df, on="actor_link")

解决方法

错误原因

原代码中set_index("actor_link").stack()会将除actor_link外的所有剩余列(包含name和movie_link两列)全部转为长序列,分组聚合时会把两列的所有值都收集到列表中,因此会混入演员姓名。同时原流程包含删列、去重、表合并多步冗余操作,可以通过原生分组聚合逻辑大幅简化。

最简实现代码

直接使用groupby配合聚合函数即可,不需要额外的删列、去重、合并操作:

import pandas as pd
original_actor_df = pd.read_csv('actors.csv')

# 按actor_link分组聚合
actor_df = original_actor_df.groupby("actor_link", as_index=False).agg(
    name=("name", "first"), # 同一演员的name完全相同,取第一个值即可
    movies=("movie_link", list) # 将同组的movie_link聚合为列表
)

# 调整字段顺序和需求一致
actor_df = actor_df[["name", "actor_link", "movies"]]

如果要沿用原链式写法的思路,只需要将name也加入索引,仅对movie_link列做堆叠聚合即可,效果和上述代码一致:

actor_df = original_actor_df.set_index(["actor_link", "name"])["movie_link"]\
    .groupby(level=[0,1])\
    .apply(list)\
    .reset_index(name="movies")\
    [["name", "actor_link", "movies"]]

两种写法输出结果完全匹配预期,没有冗余字段,执行效率更高。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 21:51:31