如何使用Pandas筛选出同时出现在指定多部影片中的演员(基于IMDB数据集)
筛选同时参演两部指定电影的演员方案
嘿,这个需求其实用Pandas的分组统计就能轻松解决!我来给你一步步拆解实现步骤:
核心思路
我们需要找出同时出现在《Fight Club (1999)》和《Se7en (1995)》中的演员,核心逻辑是统计每个演员参演目标电影的数量,筛选出数量恰好为2的演员(因为刚好两部目标电影)。
具体代码实现
# 定义目标电影列表,比用多个|逻辑更简洁 target_movies = ['Fight Club (1999)', 'Se7en (1995)'] # 第一步:筛选出仅包含这两部电影的数据集 filtered_movies = df_movies[df_movies['movie'].isin(target_movies)] # 第二步:按演员分组,统计每个演员参演的不同电影数量 actor_movie_count = filtered_movies.groupby('actor')['movie'].nunique() # 第三步:筛选出同时参演两部电影的演员 common_actors = actor_movie_count[actor_movie_count == 2].index.tolist() # (可选)如果需要查看这些演员的完整记录,再从原数据集中筛选 result_details = df_movies[df_movies['actor'].isin(common_actors)]
代码细节解释
isin(target_movies):替代了你之前用的(df_movies['movie'] == 'A') | (df_movies['movie'] == 'B')写法,当目标电影数量更多时,这种方式更易维护groupby('actor')['movie'].nunique():这里用nunique()而不是count(),是为了避免同一演员在同一部电影中有多条记录的情况(比如如果某个演员在某部电影里有多个条目,count()会算多条,但我们只需要统计他参演了几部不同的目标电影)- 最后通过
==2筛选后,common_actors就会得到你要的结果:['Brad Pitt (b.1963)']
内容的提问来源于stack exchange,提问作者CaitlynCodr
相关产品推荐
相关产品推荐

