Python 如何按层次分类计算增量?

Python 如何按层次分类计算增量?,python,pandas,group-by,increment,pandas-groupby,Python,Pandas,Group By,Increment,Pandas Groupby,假设您有一个如下所示的数据帧: -Fruit- -Shop- -Total- -Year- 0 Apple Maximo 100 2016 1 Apple John 200 2016 2 Banana John 400 2016 3 Apple Maximo 50 2017 4 Ap

假设您有一个如下所示的数据帧:

     -Fruit-     -Shop-      -Total-   -Year-
 0    Apple      Maximo        100      2016
 1    Apple      John          200      2016
 2   Banana      John          400      2016
 3    Apple      Maximo         50      2017
 4    Apple      Maximo        100      2017
 5   Banana      John          300      2017
然后,您希望按类别的每个组合计算年与年之间的增量,并将其保存为groupedby数据框中的新列:

     -Fruit-    -Fruit-Increment-     -Shop-     -Shop-Increment-
 0    Apple         -50%              Maximo           50%   
 1    Apple         -50%              John            -100%   
 2   Banana         -25%              John            -25%      
说明:2016-2017年苹果公司的总销售额增量为(伪代码示例):

这是具有实际值的以下操作:

(150-300)/300=-50% 
然而,我也想知道,这种水果在每家商店的表现如何。在Maximo中,苹果的销售额增量为(150-100)/100=50%(以此类推)

奖励1:如果2016年的值为0,而2017年有一个值(不可能计算增量),则在可能的代码中包含一种输入NaN的方法

奖励2:考虑解决这个问题的最佳方法(我想在一个大数据框架中实现它,其中列几乎是所有类别)


,如果我不清楚我想要实现什么,请通知我,以便更正问题。谢谢大家!

我不明白你的逻辑,你是如何从输入数据中得到输出的。你能解释一下吗?@jezrael已经修改过了,如果你能帮我,我会很高兴的:(
(150-300)/300=-50%