Python实现按商品的周累计销售额(WTD Sales)求助
解决方案
你的需求完全可以用groupby()实现,核心是对每个商品分组后,对销售额按周的顺序做累计求和。你之前的代码问题在于wtd是未定义的自定义函数,实际上用pandas内置的cumsum()方法就能直接完成周累计计算。
步骤说明
- 先排序数据:确保每个商品的记录按周数升序排列,否则累计结果会混乱。
- 分组累计求和:按
item分组后,对sales列应用累计求和方法,生成wtd sales列。
完整代码示例
import pandas as pd # 先按商品和周排序,保证累计逻辑正确 input_df = input_df.sort_values(by=['item', 'week']) # 新增周累计销售额列 input_df['wtd sales'] = input_df.groupby(['item'])['sales'].cumsum() # 也可以用transform写法,效果完全一致: # input_df['wtd sales'] = input_df.groupby(['item'])['sales'].transform('cumsum')
代码解释
sort_values(by=['item', 'week']):让每个商品的周数据按时间顺序排列,确保累计求和是从最早的周开始累加。groupby(['item']):将数据按商品维度拆分,每个商品单独计算自身的累计销售额。cumsum():对分组后的sales列做累计求和,比如某商品第1周销售额100,第2周200,对应的wtd sales就是100、300。
内容的提问来源于stack exchange,提问作者mr_james_0707
相关产品推荐
相关产品推荐

