如何避免for循环并使以下python代码更快

时间:2019-07-02 21:09:33

标签: python-3.x for-loop optimization

选择:布尔值矩阵。行表示来自“物料”数据帧的唯一IP值,列表示“主”数据帧的UID值
selectionRows:唯一材料IP值的numpy数组
selectionCols :唯一主UID值的numpy数组
selectionM_contraints::用于保存选择矩阵约束的列表
材料:具有布尔值(> 25000行)的材料和材料特征的熊猫数据框
Master :具有布尔值(> 5000行)的master和master功能的pandas数据框
功能:材料和主数据框共有的列名,每列都有布尔值。功能列表具有10个或更多的列名。


对于“物料”数据框中的所有IP,请从“主”数据框中找到功能不匹配的UID,并创建约束以将选择矩阵中的相应值设置为零。
例如:
Material.loc [Material.IP ='500',功能]
IP性别笔触温度
500正确正确错误


Master.loc [Master.UID ='001',功能]
UID性别中风温度
001正确正确错误


Master.loc [Master.UID ='002',功能]
UID性别中风温度
002对错对错


选择项[IP = 500,UID = 002]必须设置为零

下面是我当前的代码,它几乎可以永远运行,我需要找到一种对其进行优化的方法,如果可能的话,很可能需要删除for循环

selectionM_contraints = [] 
for row in selectionRows:
    for col in selectionCols:
        if all(Material.loc[Material.IP == row, features].all() == Master.loc[Master['UID'] == col, features].all()) == False:
            selectionM_contraints.append(selection[np.where(selectionRows == row), np.where(selectionCols == col)] == 0)

由于选择[IP = 500,UID = 002]必须设置为零,因此它将被添加到selectionM_contraints列表中

0 个答案:

没有答案