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

pandas中groupby分组求和赋值新列时值未填充如何解决

问题根因

代码存在两处错误:

  • 分组字段填错:需求要求按CustomerID分组聚合,代码里实际传入的分组字段是SalesOrderID,分组维度从根源上不符合要求。
  • 赋值逻辑不符合pandas索引对齐规则:groupby().sum()返回的聚合结果,索引是分组字段的唯一值,总长度等于分组数量,远短于原数据集的行数。直接将这个结果赋值给原表新列时,pandas只会按索引值做精确匹配填充,绝大多数行因为索引匹配不上会被填充为空值,自然无法得到正确的逐行填充结果。
修正方案

如果需要保留原表逐行结构,给每一行匹配所属CustomerID对应的UnitPrice总和,要使用transform方法——该方法会将组内聚合结果按照原表行索引映射回每一行,返回值长度和原表完全一致:

data['TotalEN'] = round(data.groupby(['CustomerID'])['UnitPrice'].transform('sum'), 2)

如果你不需要保留原表逐行结构,只是想单独得到每个客户的总金额统计结果,直接将聚合结果赋值给独立变量即可,不要向原表传入长度不匹配的序列:

customer_sum_df = round(data.groupby(['CustomerID'])['UnitPrice'].sum(), 2)

内容的提问来源于stack exchange,提问作者P.Brito

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 07:03:26