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

Python实现按SKU&Plant分组累计扣减库存的循环函数需求

解决SKU+Plant分组的库存累计扣减问题

嘿,这个需求用Python的pandas库处理最方便了,完全不用写复杂的循环,用分组和向量化操作就能高效搞定。下面是具体实现步骤:

1. 准备环境与示例数据

首先导入pandas,然后构造你的示例数据集:

import pandas as pd

# 你的原始数据集
data = {
    'SKU': [5455, 5455, 5455, 5455],
    'Plant': [989, 989, 990, 990],
    'Order': [2, 15, 10, 20],
    'Stock': [90, 90, 80, 80]
}
df = pd.DataFrame(data)

2. 分组计算累计扣减库存

核心思路是按SKU+Plant分组,先计算每个组内的累计订单量,再用初始库存减去累计订单量得到剩余库存:

# 计算每个SKU+Plant组内的累计订单量
df['Cumulative_Order'] = df.groupby(['SKU', 'Plant'])['Order'].cumsum()

# 用每个组的初始库存(第一行的Stock值)减去累计订单量,更新Stock列
df['Stock'] = df.groupby(['SKU', 'Plant'])['Stock'].transform('first') - df['Cumulative_Order']

# 可选:删除中间的累计订单列(如果不需要保留的话)
df = df.drop('Cumulative_Order', axis=1)

3. 查看结果

运行完上面的代码后,df的输出就是你期望的效果:

SKUPlantOrderStock
05455989288
154559891573
254559901070
354559902050

为什么这么做?

  • groupby(['SKU', 'Plant'])确保我们只在同一个零件+同一个地点的范围内计算,不会跨组混淆数据;
  • transform('first')能获取每个组的初始库存值(因为你的原始数据里每个组的Stock都是重复的初始值);
  • cumsum()会按组内的行顺序累计订单数量,完美实现“依次扣减”的需求;
  • 全程用pandas的向量化操作,比手写循环快得多,尤其是处理大数据集的时候。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:57:22