如何为现有DataFrame添加演员次新电影票房的合成列(Python)
Python实现添加演员第二新电影票房列的高效方案
核心思路
用Pandas的分组(groupby)和位移(shift)操作实现,这是处理结构化数据的高效方式,避免循环带来的性能损耗。
步骤说明
数据预处理(排序)
首先确保每个演员的电影按上映时间从新到旧排序。如果数据集已有ReleaseDate(上映日期)列,执行以下代码:import pandas as pd # 假设数据集存储在df中,包含Movie, Actor, Revenue, ReleaseDate列 df = df.sort_values(by=['Actor', 'ReleaseDate'], ascending=[True, False])如果数据已经按要求排好序,可以跳过此步骤。
生成目标列
通过分组后位移2位,获取每个演员当前电影之后第2部电影的票房,最后将空值替换为'-':# 按Actor分组,对Revenue列执行shift(2),得到第二新电影的票房 df['New Column'] = df.groupby('Actor')['Revenue'].shift(2) # 将空值替换为'-' df['New Column'] = df['New Column'].fillna('-')
验证结果
运行上述代码后,你的数据集会生成符合示例要求的New Column列:
| Movie | Actor | Revenue | New Column |
|---|---|---|---|
| A | Nic Cage | $7 | $5 |
| B | Nic Cage | $6 | $4 |
| C | Nic Cage | $5 | - |
| D | Nic Cage | $4 | - |
| E | Al Pacino | $3 | $1 |
| F | Al Pacino | $2 | - |
| G | Al Pacino | $1 | - |
性能说明
Pandas的groupby和shift都是基于向量化操作实现的,比手动遍历每个演员的电影列表效率高得多,尤其在处理大规模数据集时优势明显。
内容的提问来源于stack exchange,提问作者chiggywiggy
相关产品推荐
相关产品推荐

