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

Pandas DataFrame按Code分组求和销量,保留Brand字段的实现方案

解决方案

错误原因

你遇到的报错是因为groupby('Brand', 'Code')写法错误——多列分组时必须用列表包裹列名,即groupby(['Brand', 'Code'])。另外,drop_duplicates()会直接丢弃重复行的销量数据,完全不符合求和需求,所以这个步骤没必要。

正确实现方式

根据你的需求,分两种场景处理:

场景1:同一Code对应的Brand唯一

如果相同Code的行Brand完全一致,直接按Brand+Code分组求和即可,Brand会被保留在结果中:

# 按Brand和Code分组,仅对数值列求和,保留原列结构
result = df_VxM.groupby(['Brand', 'Code'], sort=False, as_index=False).sum(numeric_only=True)

numeric_only=True用于避免对Brand这类非数值列尝试求和,让代码更严谨。

场景2:同一Code可能对应多个Brand

如果相同Code下有不同的Brand,需要保留Brand信息同时求和销量,可以用agg()指定每列的处理逻辑:

result = df_VxM.groupby('Code', sort=False, as_index=False).agg(
    Brand=('Brand', lambda x: ','.join(x.unique())),  # 合并该Code下所有唯一Brand
    Sells1=('Sells1', 'sum'),
    Sells2=('Sells2', 'sum')
)

如果只想保留每组第一个出现的Brand,把lambda x: ','.join(x.unique())换成'first'即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 03:43:11