Let's say we have:
[[2,'B'],[4,'D']]
and we want to fill it any missing numbers with:
[[1,'A'],[2,'Q'],[3,'C'],[4,'Q'],[5,'E']]
#The data data2 = [[2,'B'],[4,'D']] fill2=[[1,'A'],[2,'Q'],[3,'C'],[4,'Q'],[5,'E']] def patch(data,fill,column): #the start sample #--------------- i=0 c=column #pull of columns comparing #-------------------------- data_c=[d[c] for d in data] fill_c=[f[c] for f in fill] #funct to insert at a particular place in data #--------------------------------------------- ins=lambda x,i: data.insert(i,x) #ID's samples in fill that are not in the data samples #Places them into the data samples #-------------------------------------------- for f in fill: if f[c] not in data_c: print str(f[c])+' not in data' #insert missing line into data ins(f,i) #reset the new data_c list to scan data_c=[d[c] for d in data] #bump up the counter i=i+1 return data #to patch by letter print patch(data2,fill2,0)
Now we see that our data has been patched
>>> 1 not in data 3 not in data 5 not in data [[1, 'A'], [2, 'B'], [3, 'C'], [4, 'D'], [5, 'E']]
We can also patch by letter instead
#to patch by number print patch(data2,fill2,1) >>> A not in data Q not in data C not in data E not in data [[1, 'A'], [2, 'Q'], [3, 'C'], [2, 'B'], [5, 'E'], [4, 'D']]
No comments:
Post a Comment