python - 如何优化/加快迭代 Dataframe 并从另一个 Dataframe 匹配/获取数据?
问题描述
我有一些有效的代码,但我一直在寻找优化功能并使其更快的方法。当我运行此代码时,在我的计算机上完成最多可能需要 2 个小时。我正在使用两个数据框:一个大型 DF,其中包含超过 100 万行带有 SKU 编号、价格等的汽车零件;正如您在代码示例中看到的那样,我正在从具有超过 300k 行的 CSV 表中读取数据。
这是我的代码:
npw_inventory = pd.read_csv('inventory/npw.csv', low_memory=False)
count = 0
for _, row in pw.iterrows():
if row['CS-SKU-NP'][5:] in npw_inventory['SKU'].values:
matched_npw = npw_inventory.loc[npw_inventory['SKU'] == row['CS-SKU-NP'][5:]]
min_qty = matched_npw['Min_order_Qty']
core = matched_npw['Core_cost']
row['MinPrice'] = (row['MinPrice'] + core) * min_qty
count += 1
print(count)
我要回答的是:1)这是最有效的方法吗?,以及 2)我怎样才能减少运行此代码所需的时间?
数据:
pw
{'WD':'A','LC':'WGL','MasterLC':307.0,'零件编号':'H6545BL','MasterSKU':'307|H6545BL','重量':2.0,'DimWeight ':2.0,'ShipWeight':2.0,'Length':7.0,'Width':5.0,'Height':5.0,'Total':27.0,'DIM':175.0,'UPC':'042723936655','Qty ':0,'CS-SKU':'AWGL|H6545BL','CS-SKU-NP':'AWGL|H6545BL','MinPrice':11.53,'Shipping':nan,'Carrier':nan,'Service ':nan,'Markup':nan,'ShipMkup':nan,'ListMkup':nan,'PackQty':1.0,'MinQty':nan,'MaxQty':nan,'邮政编码':90746.0,'CatSKU' :南,'OP-最低(Y)':南,'VND-最低(Y)':南,“MinMkDown”:南,“MaxMkUp”:南,“间隔”:南,“BundleSKU”:南,“重复”:南}
npw.csv
{'Line_code':'3MM','SKU':'00379','SKU_noDS':'00379','Stock_1':0,'Stock_11':0,'Stock_12':0,'Stock_13':0,' Stock_15':25,'Stock_16':0,'Stock_18':0,'Stock_19':0,'Stock_2':0,'Stock_3':0,'Stock_4':0,'Stock_7':0,'Stock_89' :0,“Stock_9”:0,“Stock_VIC-94”:0,“成本”:90.36,“核心成本”:0.0,“最小订单数量”:1}
基本上发生的事情是我正在运行一个 Jupyter 笔记本的脚本。它加载pw
文件并对定价和运输进行各种更改。对于这个特定的部分,我将 SKUpw
与 SKU 进行匹配npw_inventory
以获得Core_cost
和Min_order_Qty
. 在pw
我添加匹配core
的MinPrice
SKU 并将其乘以min_qty
.
解决方案
推荐阅读
- django - Django:在视图中创建自定义对象列表并将其传递给模板以循环
- mysql - 如何使用单个查询计算 SQL (MySQL) 表中行的出现概率?
- ios - Swift 中触发的 UITextField 错误
- ios - 从 Cocoapods 迁移到 Swift 包管理器但导入模块失败
- css - CSS allow overflow-y only when transition ends
- javascript - 如何在不同的类中关闭 swipeabledrawer
- javascript - Javascript - 有条件地访问对象的特定部分
- android-studio - 无法运行颤振项目
- angular - 离子 - 未捕获(承诺):TypeError:无法读取未定义的属性'then'
- java - 如何在 JavaFX 中生成 UI 元素?例如。生成 10 个按钮