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

如何用for循环合并DataFrame中重复影片的制作公司至单行

解决影片制作公司合并的DataFrame处理方案

核心解决方案:使用Pandas分组聚合(替代低效的for循环)

直接利用Pandas的groupby()+agg()方法完成合并,这比手动写for循环高效得多,且代码简洁可靠。

步骤1:模拟你的数据场景

先构造和你数据结构一致的示例,方便理解:

import pandas as pd

data = {
    'title': ['Avatar', 'Avatar', 'Titanic', 'Titanic', 'Inception'],
    'id': [1, 1, 2, 2, 3],
    'revenue': [2847246203, 2847246203, 2201647264, 2201647264, 825532764],
    'comp_name': ['20th Century Fox', 'Lightstorm Entertainment', 'Paramount Pictures', '20th Century Fox', 'Warner Bros.']
}
df = pd.DataFrame(data)

步骤2:执行合并操作

按影片id(唯一标识,比title更可靠,避免重名影片)分组,将同一影片的制作公司合并为字符串(或列表),其他字段取唯一值(同一id的title、revenue理论上完全一致):

# 合并制作公司为逗号分隔的字符串,也可以用list(x)转成列表格式
merged_df = df.groupby('id').agg(
    title=('title', 'first'),
    revenue=('revenue', 'first'),
    comp_names=('comp_name', lambda x: ', '.join(x))
).reset_index()

执行后merged_df的结果:

idtitlerevenuecomp_names
1Avatar284724620320th Century Fox, Lightstorm Entertainment
2Titanic2201647264Paramount Pictures, 20th Century Fox
3Inception825532764Warner Bros.

可选:添加数据校验(避免异常数据)

如果担心同一id下的title/revenue存在不一致的异常情况,可以加校验逻辑:

def validate_unique(series):
    if series.nunique() != 1:
        raise ValueError(f"ID {series.name} 存在不一致的字段值")
    return series.iloc[0]

merged_df = df.groupby('id').agg(
    title=('title', validate_unique),
    revenue=('revenue', validate_unique),
    comp_names=('comp_name', ', '.join)
).reset_index()

为什么不推荐用for循环?

手动for循环处理这类场景不仅代码繁琐,而且面对大数据量时,Pandas的向量化分组操作速度是for循环的几十甚至上百倍,同时能避免循环中容易出现的重复赋值、遗漏数据等bug。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 07:10:12