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

Pandas GroupBy分组求和后如何新增分组最小ID且不破坏原有聚合结果

解决方案

你可以直接使用groupby.agg方法为不同列指定不同的聚合规则,无需修改原有分组键,也不会影响Cantidad的求和结果,代码如下:

# 原有生成Concat列的逻辑保留,建议增加类型转换避免数值相加出错
df['Concat'] = df['Doc'].astype(str) + df['Doc2'].astype(str) + df['Fecha'].str[:-9].str.replace('-','')

# 一次分组完成两个聚合逻辑:Cantidad求和,ID取最小值
gb = df.groupby(['Concat', 'Fecha', 'Nombre', 'Doc', 'Doc2', 'Prod'],
                as_index=False).agg(
                    Cantidad = ('Cantidad', 'sum'),
                    ID = ('ID', 'min')
)

# 调整列顺序和你期望的输出一致
gb = gb[['Concat', 'Fecha', 'ID', 'Nombre', 'Doc', 'Doc2', 'Prod', 'Cantidad']]

如果已经提前生成了不带ID的聚合结果,也可以通过映射的方式补充ID列:

# 从原表计算每个Concat分组对应的最小ID
min_id_mapping = df.groupby('Concat')['ID'].min().to_dict()
# 给现有聚合表匹配ID
gb['ID'] = gb['Concat'].map(min_id_mapping)
# 调整列顺序即可
gb = gb[['Concat', 'Fecha', 'ID', 'Nombre', 'Doc', 'Doc2', 'Prod', 'Cantidad']]

内容的提问来源于stack exchange,提问作者Luis Desde Canada

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 13:21:01