基于订单号循环拆分Numpy数组并写入新数组的技术问题
按订单号分组拆分Numpy数组的优化方案
我是Python新手,正在做第一个Selenium项目。从Excel读取到一组已按订单号排序的Numpy数组,原始数据结构如下:
原始表格:
order number customer name customer no. article 48000100 supplierx 1 article1 48000101 suppliery 2 article2 48000101 suppliery 2 article3 48000102 supplierz 3 article4
对应的Numpy数组:
import numpy as np list1 = np.array([ ["48000100","48000101","48000101","48000102"], ["supplierx","suppliery","suppliery","supplierz"], ["1","2","2","3"], ["article1", "article2", "article3", "article4"] ])
需求
循环遍历该数组,按订单号拆分后得到子数组,拆分后每次循环输出的结果如下:
第一次循环:
[["48000100"], ["supplierx"], ["1"], ["article1"]]
第二次循环:
[["48000101","48000101"], ["suppliery","suppliery"], ["2","2"], ["article2", "article3"]]
最后一次循环:
[["48000102"], ["supplierz"], ["3"], ["article4"]]
拆分后需要逐次通过Selenium提交到网页,每次提交完成后WebDriver返回首页再处理下一组,所以必须用循环实现,不能用单行代码。
我当前的实现代码
最初尝试用np.delete按轴分离数组,但没法把删除的列存入新数组,于是写了下面的循环代码实现需求:
import numpy as np list1 = np.array([ ["48000100","48000101","48000101","48000102"], ["supplierx","suppliery","suppliery","supplierz"], ["1","2","2","3"], ["article1", "article2", "article3", "article4"] ]) current_pos_arr = 0 total_cols = len(list1[0]) while current_pos_arr <= total_cols - 1: # 确定当前订单号的连续列数 if current_pos_arr != total_cols - 1: if list1[0][current_pos_arr + 1] == list1[0][current_pos_arr]: count_same_orders = current_pos_arr + 1 else: count_same_orders = current_pos_arr else: count_same_orders = current_pos_arr # 截取当前订单对应的子数组 list2 = list1[:, current_pos_arr:count_same_orders + 1] print(list2) # --- Selenium处理逻辑 --- # 提交拆分后的数组到SAP页面 # 从list2中获取供应商名称等信息填入 # 校验订单号并执行相关操作 # 完成后返回首页 # ------------------------ # 移动到下一组订单的起始位置 current_pos_arr = count_same_orders + 1
现在想寻求更简洁、高效的实现思路或代码。
内容的提问来源于stack exchange,提问作者Conference Call
相关产品推荐
相关产品推荐

