python - 我需要帮助让 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
我创建了这个循环来遍历数据框并执行以下操作:
减去该项目的 DAILY_DEDUCTION
如果日期与采购订单日期相同,则添加 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 行上运行它,并希望找到一些关于如何以更好的方式解决这个问题的见解?
解决方案
推荐阅读
- sql - 如何将多个参数传递给触发器上的删除操作?
- javascript - 使伪元素出现,然后在 X 时间后再次消失
- r - R dplyr 加入日期范围
- javascript - CSS 因 Angular “插值”而改变
- jquery - 用于多组日期的 jQuery ui 日期选择器多个类
- powershell - PowerShell Export-Csv 在输出中重复最后一个值 - 解决方案
- javascript - 仅在没有 document.write 的情况下不存在时才加载 jQuery
- mysql - 设定时间内每天每小时的平均值
- http - URI 中的 JWT 是一种不好的做法吗?
- angular - 从 Firebase 存储下载文件不起作用