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

Pandas如何按state和store分组求和sales后乘rate生成new_sales新列

解决方法

你需要用transform代替apply处理分组聚合结果,transform会自动把分组求和的结果广播回原数据对应的每行,直接和当前行的rate相乘即可得到目标列:

import pandas as pd
# 构造示例数据
data = [['california', 'a', 11, 0.6], ['california', 'a', 12, 0.4], ['california', 'b', 32, 0.7]]
df= pd.DataFrame(data, columns=['state','store','sales','rate'])

# 新增new_sales列的正确代码
df['new_sales'] = df.groupby(['state','store'])['sales'].transform('sum') * df['rate']

运行后结果

statestoresalesratenew_sales
californiaa110.613.8
californiaa120.49.2
californiab320.722.4

原代码问题说明

你之前使用apply的写法,分组求和后直接和全表rate列相乘,会出现索引和维度匹配错误,无法正确对应到每行赋值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 09:24:03