选择:布尔值矩阵。行表示来自“物料”数据帧的唯一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列表中