make two tables having same orders in both column and row names

Emile van Sebille emile at fenx.com
Thu Nov 19 22:38:00 CET 2009


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




More information about the Python-list mailing list