我在python中有一个带有8列的2D矩阵。
这8列保存两个不同实体的记录,比如A和B,每个实体有4列。我的示例数据如下:
╔══════╦═════════╦══════╦═════════╗
║ A_ID ║ arrtibA ║ B_ID ║ attribB ║
╠══════╬═════════╬══════╬═════════╣
║ 1 ║ val ║ 1 ║ val ║
║ 1 ║ val ║ 1 ║ val ║
║ 1 ║ val ║ 2 ║ val ║
║ 1 ║ val ║ 2 ║ val ║
║ 2 ║ val ║ 3 ║ val ║
║ 2 ║ val ║ 3 ║ val ║
║ 2 ║ val ║ 4 ║ val ║
║ 3 ║ val ║ 5 ║ val ║
║ 3 ║ val ║ 5 ║ val ║
╚══════╩═════════╩══════╩═════════╝
我希望将其转换为这种形式:
╔══════╦═════════╦══════╦═════════╗
║ A_ID ║ arrtibA ║ B_ID ║ attribB ║
╠══════╬═════════╬══════╬═════════╣
║ 1 ║ val ║ 1 ║ val ║
║ 1 ║ val ║ 1 ║ val ║
║ 2 ║ val ║ 2 ║ val ║
║ 2 ║ val ║ 2 ║ val ║
║ 3 ║ val ║ 3 ║ val ║
╚══════╩═════════╩══════╩═════════╝
简单来说,根据各自的ID对齐实体A和实体B的属性。可以丢弃找不到匹配的行。我有大约28,000多行,其中A_ID的范围是17到230,B_ID的范围是17到305.但是一旦完成对齐,两个实体的ID低于231的行在彼此前面对齐,并且休息从实体B的231到305被丢弃。
答案 0 :(得分:0)
您可以尝试:
data = np.delete(data, np.where(data[:,0]!=data[:,2])[0], 0)