努力从数据框中删除行

时间:2020-10-21 11:49:56

标签: python loops rows traversal remove

我一直在谷歌搜索和阅读本网站,而且我知道人们说,通常,如果您遍历Dataframe,则可能做错了。因此,我认为我做错了。我面临的挑战是我需要基于逻辑来决定保留什么和丢弃什么。最好用一个例子来解释。说我的数据框看起来像:

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  

我的数据框是通过合并我的销售日期和我的采购数据而构建的。我面临的挑战是确保我记录每个销售订单的最大PO_PRICE,而不会超过总PO数量。因此,对于以上数据,我的结果将是,因为我有足够的填充空间:

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中,我的总PO数量= 1000,最高价格= $ 8.88。我需要将剩余的500分配给较低的PO_PRICE。因此,我需要对数据框执行逻辑,并且我唯一想到的方法就是对其进行迭代。在此示例中,理想情况下,我的结果集应该是:

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 

如您所见,其他销售订单上的项目,我无法将其报告为有效项目,因为我的销售量不能超过购买的产品,因此,这些需要排除在外。

我有我写的逻辑,而且相当复杂,但是我取得了很大的进步。现在卡住的地方是,当我在行上进行迭代时,我的逻辑告诉我需要删除某些行,并且我认为在迭代并仍然执行逻辑检查时无法删除。 / p>

如果有人对如何提供帮助有任何想法,我将不胜感激。就像我说的那样,我知道我的方法是错误的,但是,我对Python还是太陌生,我想不出其他任何方法来做到这一点。

在此先感谢您的帮助。

0 个答案:

没有答案