熊猫:如何使用递归函数?

时间:2020-01-09 17:03:51

标签: python pandas numpy recursion

我具有以下数据集,并且我试图找到一种基于其余列来计算Leftover列的方法。

我要实现的逻辑很简单-

  • 如果Order出现在一周中,则我们减去当前一周中可用的Inventory
  • 如果Order仍然有剩余数量需要满足,我们会从前三周的Inventory中减去
  • 如果Order仍然有剩余数量需要满足,我们将在接下来的三周内将其从Inventory中减去
  • 如果在7周的时间内完成了Order,那么无论剩余的Inventory是否存在,我们都会将其转移到Leftover

例如:

  • 对于ABC零件,第5周的订单量为70。我们将首先从同一周70 - 10 = 60提取库存
  • 我们还有60个订单,我们要消耗第4周的可用库存,60 - 20 = 40
  • 我们还有40个订单,我们要消耗第3周的可用库存,40 - 30 = 10
  • 我们还有10个订单,我们现在消耗第2周的可用库存,10 - 5 = 5
  • 我们仍然有5个订单,但是我们无法在第1周内消耗库存,因为这超出了3周的时间范围,因此我们可以再进行3周
  • 我们进入第6周,Inventory50 - 5 = 45中有50个单位可用
  • 现在我们已经完成了第4周的订单,我们转到下一个要履行的订单,即第7周有60个订单。
  • 我们必须完成60个订单,因此我们首先消耗本周的库存,60 - 5 = 55
  • 我们仍然有55个订单,因此我们消耗了前一周(即第6周)的库存。现在请记住,上一个订单已从第6周的库存中取出5个单位,因此我们只剩下{{ 1}}个星期的单位,因此45
  • 我们还有10个订单,但是由于库存已被上一个订单消耗,因此我们无法再退回
  • 我们从现在开始,即第8周,55 - 45 = 10
  • 这就是我们如何在第8周获得10 - 30 = -20部分-20的剩余价值
  • 对第ABC部分重复相同的逻辑
XYZ

现在,这可以通过许多 Part Week Inventory Orders Leftover 0 ABC 1 10 0 0 1 ABC 2 5 0 0 2 ABC 3 30 0 0 3 ABC 4 20 0 0 4 ABC 5 10 70 0 5 ABC 6 50 0 0 6 ABC 7 5 60 0 7 ABC 8 30 0 -20 8 XYZ 1 10 0 10 9 XYZ 2 5 0 15 10 XYZ 3 10 0 0 11 XYZ 4 30 0 0 12 XYZ 5 30 90 0 语句来实现,但是如何使用Pandas Vectorization,Recursion和更少的代码行来提高效率,因为我将在1000上使用此逻辑+部分?

if-else

谢谢,谢谢您的帮助。

0 个答案:

没有答案