运行 通过遍历索引列中的重复项进行 for 循环:python

run a for loop by traversing on duplicates in the index column: python

我是python的业余用户,想开发一个逻辑,从与零件相关的可用数量中找出可以满足的订单。

partno  ordernumber orderqty    Qty available
A        abc          15        20
A        acb           5        20
A        adc           8        20
B        a41           9        60
B        a14          16        60
B        a56          30        60

每个部件号都有唯一的订单号和订单数量。可用数量是对应零件号的总可用数量。

我想从相关零件的可用数量中找出可以满足的订单。输出看起来像下面的

partno  ordernumber orderqty    Qty available  Y/N
A        abc          15        20              Y
A        acb           5        20              Y
A        adc           8        20              N
B        a41           9        60              Y
B        a14          16        60              Y
B        a56          30        60              Y

我正在努力编写一个 for 循环,它将遍历重复的零件号,并在每次迭代订单号时从可用数量中减少订单数量。

伪代码:

      for partno in df
      for ordernumber in df.interrow
      if (qtyavailble>orderqty) 
      {df.newcoln = "Y" & qtyavailable = qtyavailable-orderqty}
      else {df.newcoln="N"}

我知道这是一个可怕的代码,但你明白了。 谢谢!

你可以groupby partno 然后做cumsum for orderqty, 看看它是否大于Qtyavailable

df.groupby('partno').orderqty.cumsum().le(df.Qtyavailable).map({True:'Y',False:'N'})
Out[459]: 
0    Y
1    Y
2    N
3    Y
4    Y
5    Y
dtype: object