# HG changeset patch # User bgruening # Date 1425308372 18000 # Node ID b84c81b7d762d91e92c3d89c89db44cb2ba92283 Uploaded diff -r 000000000000 -r b84c81b7d762 columnArrange.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/columnArrange.xml Mon Mar 02 09:59:32 2015 -0500 @@ -0,0 +1,78 @@ + + by header name + + pandas + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +**What it does** + +With this tool you can specify (by naming the header) which columns need to be leftmost. The columns which are not specified will be ordered as before, right of the columns which were specified. + +Input file:: + + AHeader BHeader CHeader DHeader + a b c d + a b c d + +Specifying **CHeader** and **BHeader**, as the columns that should be leftmost, generates:: + + CHeader BHeader AHeader DHeader + c b a d + c b a d + + + + diff -r 000000000000 -r b84c81b7d762 column_arrange.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/column_arrange.py Mon Mar 02 09:59:32 2015 -0500 @@ -0,0 +1,20 @@ +#!/usr/bin/env python +import pandas as pd +import argparse + + +parser = argparse.ArgumentParser() +parser.add_argument('-i', '--input', help='Tabular Input File Name') +parser.add_argument('-o','--output', help='Tabular Output File') +parser.add_argument('-c', '--columns',nargs='+', help='Column Headers to Sort By') +args=parser.parse_args() + +cols=args.columns +table=pd.read_csv(args.input,sep='\t') +blist = list(table.columns) +for token in cols: + blist.remove(token) +sorted_table = table[args.columns + blist] +# write without index, seperated by tabs +sorted_table.to_csv(args.output,sep='\t',index=False) + diff -r 000000000000 -r b84c81b7d762 test-data/columnarrange_input1.tab --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/columnarrange_input1.tab Mon Mar 02 09:59:32 2015 -0500 @@ -0,0 +1,5 @@ +name fname age nationality +Woryt Heiko 22 german +Humte Alfons 49 austrian +Witz Gerald 12 french +Koulibaly Ansgard 33 nigerian diff -r 000000000000 -r b84c81b7d762 test-data/columnarrange_input2.tab --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/columnarrange_input2.tab Mon Mar 02 09:59:32 2015 -0500 @@ -0,0 +1,5 @@ +second name age nationality first name +Woryt 22 german Heiko +Humte 49 austrian Alfons +Witz 12 french Gerald +Koulibaly 33 nigerian Ansgard diff -r 000000000000 -r b84c81b7d762 test-data/columnarrange_result1.tab --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/columnarrange_result1.tab Mon Mar 02 09:59:32 2015 -0500 @@ -0,0 +1,5 @@ +fname age name nationality +Heiko 22 Woryt german +Alfons 49 Humte austrian +Gerald 12 Witz french +Ansgard 33 Koulibaly nigerian diff -r 000000000000 -r b84c81b7d762 test-data/columnarrange_result2.tab --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/columnarrange_result2.tab Mon Mar 02 09:59:32 2015 -0500 @@ -0,0 +1,5 @@ +first name nationality second name age +Heiko german Woryt 22 +Alfons austrian Humte 49 +Gerald french Witz 12 +Ansgard nigerian Koulibaly 33 diff -r 000000000000 -r b84c81b7d762 tool_dependencies.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tool_dependencies.xml Mon Mar 02 09:59:32 2015 -0500 @@ -0,0 +1,6 @@ + + + + + +