首页 > 解决方案 > 我需要帮助让 pandas 在数据框交互方面表现更好

问题描述

我是一个新手,已经研究了熊猫几天,并开始了我的第一个项目。我想用它来创建当月的产品库存预测时间表。

基本上我得到了库存和预测的每日减少量,并用预测的库存跟踪从今天到月底的一条线。另外,如果有采购订单要在 XYZ 日交货,我会加上当天的交货金额。

我有一个数据框,其中包含今天的库存和本月预计的每日减少量

ITEM    STOCK    DAILY_DEDUCTION
A       1000     20
B       2000     15
C       800      8
D       10000    100

还有另一个数据框,其中包含待处理的采购订单和将交付的数量。

ITEM    DATE         RECEIVING_AMOUNT
A       2018-05-16   20
B       2018-05-23   15
A       2018-05-17   8
D       2018-05-29   100

我创建了这个循环来遍历数据框并执行以下操作:

  1. 减去该项目的 DAILY_DEDUCTION

  2. 如果日期与采购订单日期相同,则添加 RECEIVING_AMOUNT

    df_dates = pd.date_range(start=today, end=endofmonth, freq='D')
    
    temptable = []
    
    for row in df_stock.itertuples(index=True):
        predicted_stock= getattr(row, "STOCK")
        item = getattr(row, "ITEM")
    
        for date in df_dates:
            date_format = date.strftime('%Y-%m-%d')
            predicted_stock = predicted_stock - getattr(linha, "DAILY_DEDUCTION")
            order_qty = df_purchase_orders.loc[(df_purchase_orders['DATE'] == date_format)
                                             & (df_purchase_orders['ITEM'] == item), 'RECEIVING_AMOUNT']
            if len(df_purchase_orders.index) > 0:
                predicted_stock = predicted_stock + order_qty.item()
            lista = [date_format, item, int(predicted_stock)]
            temptable.append(lista)
    

而且......好吧,它完成了这项工作,但速度很慢。我在 100k 行上运行它,并希望找到一些关于如何以更好的方式解决这个问题的见解?

标签: pythonalgorithmpandas

解决方案


推荐阅读