Python 努力从我的数据框中删除行

Python 努力从我的数据框中删除行,python,loops,rows,traversal,remove,Python,Loops,Rows,Traversal,Remove,我一直在谷歌上搜索和阅读这个网站,我知道有人说,一般来说,如果你在一个数据帧上迭代,你很可能做错了。所以,我觉得我做错了。我面临的挑战是,我需要根据逻辑来决定保留什么和放弃什么。最好用一个例子来解释。假设我的数据帧看起来像: SO_NUMBER ITEM # SALES_QTY PO_NUMBER PO_QTY PO_PRICE ENOUGH_TO_FILL ---------------------------------------------------------

我一直在谷歌上搜索和阅读这个网站,我知道有人说,一般来说,如果你在一个数据帧上迭代,你很可能做错了。所以,我觉得我做错了。我面临的挑战是,我需要根据逻辑来决定保留什么和放弃什么。最好用一个例子来解释。假设我的数据帧看起来像:

SO_NUMBER   ITEM #   SALES_QTY   PO_NUMBER   PO_QTY   PO_PRICE   ENOUGH_TO_FILL
--------------------------------------------------------------------------
123         ABC123   5           555         1000     8.88       TRUE
312         ABC123   10          555         1000     8.88       TRUE
123         ABC123   5           777         500      1.11       TRUE
312         ABC123   10          777         500      1.11       TRUE  
我的数据框架是通过合并我的销售日期和我的采购数据构建的。我面临的挑战是确保记录每个销售订单的最大采购订单价格,而不超过采购订单的总数量。因此,对于上述数据,我的结果是,因为我有足够的数据来填充:

SO #   ITEM #   SALES_QTY   PO_NUMBER   PO_QTY   PO_PRICE
----------------------------------------------------------
123    ABC123   5           555         1000     8.88     
312    ABC123   10          555         1000     8.88     
但是,我在下面的场景中被搞砸了:

SO_NUMBER   ITEM #   SALES_QTY   PO_NUMBER   PO_QTY   PO_PRICE   ENOUGH_TO_FILL
--------------------------------------------------------------------------
123         ABC123   1500        555         1000     8.88       FALSE
312         ABC123   10          555         1000     8.88       TRUE
123         ABC123   5           777         500      1.11       TRUE
312         ABC123   10          777         500      1.11       TRUE
在这种情况下,我在第1行购买了1500件,我只有一件总订单数量=1000件,最高价格=8.88美元。剩下的500我需要分配到较低的采购价格。因此,我需要在数据帧上执行逻辑,并且,我能想到的唯一方法是对其进行迭代。在本例中,我的结果集理想情况下为:

SO_NUMBER   ITEM #   SALES_QTY   PO_NUMBER   PO_QTY   PO_PRICE
--------------------------------------------------------------
123         ABC123   1000        555         1000     8.88    
123         ABC123   500         555         1000     8.88    
312         ABC123   0           555         1000     8.88    
123         ABC123   0           777         500      1.11    
312         ABC123   0           777         500      1.11 
正如你所看到的,其他销售订单上的商品,我不能报告它们是有效的,因为我不能卖的比我买的多,所以,这些需要被排除在外

我有我写的逻辑,它相当复杂,但我已经取得了很大的进步。我现在陷入困境的地方是,当我对行进行迭代时,我的逻辑告诉我需要删除某些行,并且,我认为在迭代并仍然执行逻辑检查时不可能删除

如果有人有任何帮助的想法,我将不胜感激。正如我所说,我知道我的方法是错误的,但是,我对Python太陌生了,我想不出任何其他方法来实现它

提前感谢您的帮助