On 11/18/2009 12:57 PM Ping-Hsun Hsieh said...
Hi,

I would like to compare values in two table with same column and row names, but 
with different orders in column and row names.
For example, table_A in a file looks like the follows:
AA100   AA109   AA101   AA103   AA102
BB1     2       9       2.3     1       28
BB3     12      9       2.3     1       28
BB9     0.5     2       2.3     1       28
BB2     2       9       21      1       20

Table_B in the other file looks like the follows:
AA101   AA109   AA100   AA103   AA102
BB1     2       9       2.3     2       28
BB2     2       9       2.3     1       28
BB9     2       9       2.3     1       28
BB3     2       2       2       1       28

Can anyone give an efficient way to make the two tables having same orders in 
column and row names so I can easily and correctly compare the values in 
positions?

Thanks,
PingHsun


This is one way... (python 2.4.1)
#For example, table_A in a file looks like the follows:
table_A = [ line.split()
  for line in """AA100  AA109   AA101   AA103   AA102
BB1 2   9   2.3 1   28
BB3 12  9   2.3 1   28
BB9 0.5 2   2.3 1   28
BB2 2   9   21  1   20""".split('\n')
  ]

#Table_B in the other file looks like the follows:
table_B = [ line.split()
  for line in """AA101  AA109   AA100   AA103   AA102
BB1 2   9   2.3 2   28
BB2 2   9   2.3 1   28
BB9 2   9   2.3 1   28
BB3 2   2   2   1   28""".split('\n')
  ]


for table in table_A,table_B:
    table[:] = [['']+table[0]]+sorted(table[1:])
    table = zip(*sorted(zip(*table)))
    for ii in table: print ii


Emile

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to