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

如何使用Pivot函数重塑电影数据集的DataFrame?

用Pivot函数重塑你的电影数据集

嘿,我来帮你拆解怎么用Pandas的pivot()和pivot_table()来重塑你的电影DataFrame~先理清楚核心逻辑,再结合你的数据集举几个实用例子:

核心概念:pivot() vs pivot_table()

  • pivot():适合无重复组合的场景——要求你指定的index(行索引)和columns(列分组)的每一对组合,对应唯一的values值,否则会报错。
  • pivot_table():是pivot()的增强版,支持聚合操作,当同一index+columns组合对应多个值时,可以自动计算均值、总和等,不会报错,实际工作中用得更多。

结合你的数据集的实用例子

假设你的DataFrame叫movie_df,以下是几种常见的重塑场景:

1. 按导演分组,看不同年份的电影票房

如果每个导演每年只拍一部电影(无重复组合),可以直接用pivot():

# 行:导演名字;列:电影上映年份;单元格:对应电影的票房
director_year_gross = movie_df.pivot(
    index='director_name',
    columns='title_year',
    values='gross'
)

如果有导演同一年拍了多部电影,就换成pivot_table(),用聚合函数处理重复值(比如取平均票房):

director_year_avg_gross = movie_df.pivot_table(
    index='director_name',
    columns='title_year',
    values='gross',
    aggfunc='mean'  # 也可以用'sum'取总票房,'max'取最高票房
)

2. 按国家分组,看不同分级的平均预算

想对比不同国家、不同内容分级电影的预算水平:

country_rating_budget = movie_df.pivot_table(
    index='country',
    columns='content_rating',
    values='budget',
    aggfunc='median',  # 用中位数比均值更抗极端值
    fillna(0)  # 把缺失值填充为0,也可以换成'N/A'
)

3. 按演员分组,看不同类型电影的IMDB评分

比如想了解演员Joel David Moore(你的第一条数据里的actor2)参演不同类型电影的评分表现:

# 先筛选出该演员的电影,再做透视
actor_genre_score = movie_df[movie_df['actor_2_name'] == 'Joel David Moore'].pivot_table(
    index='actor_2_name',
    columns='genres',
    values='imdb_score',
    aggfunc='mean'
)

注意事项

  • 如果你的genres字段是多值(比如Action|Adventure|Fantasy|Sci-Fi),想按单个类型透视的话,需要先拆分这个字段(比如用str.split('|', expand=True)),再做后续操作。
  • 透视后的结果可以用reset_index()把行索引变回普通列,方便后续分析。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:51:14