Python 按大熊猫组顺序计算差异

Python 按大熊猫组顺序计算差异,python,pandas,time-series,pandas-groupby,Python,Pandas,Time Series,Pandas Groupby,我试图尽可能高效地按顺序计算两列之间的差值。我的数据框如下所示: category sales initial_stock 1 2 20 1 6 20 1 1 20 2 4 30 2 6 30 2 5 30 2 7 30 c

我试图尽可能高效地按顺序计算两列之间的差值。我的数据框如下所示:

category   sales   initial_stock
    1        2         20
    1        6         20
    1        1         20
    2        4         30
    2        6         30
    2        5         30
    2        7         30
category   sales   initial_stock    final_stock
    1        2         20               18
    1        6         20               12
    1        1         20               11
    2        4         30               26
    2        6         30               20
    2        5         30               15
    2        7         30               8
我想计算一个变量
final_stock
,如下所示:

category   sales   initial_stock
    1        2         20
    1        6         20
    1        1         20
    2        4         30
    2        6         30
    2        5         30
    2        7         30
category   sales   initial_stock    final_stock
    1        2         20               18
    1        6         20               12
    1        1         20               11
    2        4         30               26
    2        6         30               20
    2        5         30               15
    2        7         30               8
因此,对于每个类别,
final\u stock
first等于
initial\u stock
-
sales
,it等于
final\u stock.shift()
-
sales
。我用
for
循环成功地做到了这一点,但速度相当慢,我的感觉是这个问题可能有一个或两个线性解决方案。你有什么想法吗


谢谢

使用“销售”中的
groupby
cumsum
获得每个类别的累计销售库存,然后从“初始库存”中减去:


该死,太快了。非常感谢,它很有魅力。看来我仍然有办法更高级地使用groupby