1

2 つの列に基づいて複数列のファイルを並べ替える必要があります。両方の列に浮動小数点数があり、最初の並べ替えは低いものから高いものへ、2 番目は高いものから低いものへと並べ替える必要があります。サンプルファイルは次のとおりです。

A        B        C        D
AK       0.01     200.8    NY
DK       0.90     50.5     PHL
AB       0.0002   750.04   Port
GA       0.076    340.00   NY

したがって、最初に列 B を低から高に並べ替え、次に列 C で高から低に並べ替える必要があります。私が持っているコードには多くの時間がかかり、ラップトップが応答しなくなりますが、そうではないと思います。さらに、列Bを「逆」、つまり高から低にソートする方法がわかりません。コードは次のとおりです。

fh_in = open(res_file,'r')
res = [line.strip('\n').split('\t') for line in fh_in]##Line converted to list and read
res_list = list(res) ##List to hold results while pre-processing
res_list.sort(key= lambda x: (float(x[int(1)]),-float(x[2])))##Sort on Col A and B
print ('Sorted results:\n',res_list)

列 B を高から低に並べ替えて、両方の列を並べ替えるにはどうすればよいですか? 複数のファイルがあり、各ファイルには 25,000 行 * 50 列があるため、これを達成するための最速の方法は何でしょうか?

あなたの助けを本当に感謝します.

-AK-

4

1 に答える 1

3

単純に負の数を返します。

res_list.sort(key=lambda x: (float(x[1]), -float(x[2])))

Bこれはソート順を逆にしますが、データはA 最初に列でソートされることに注意してください。

sorted()関数を使用して、ソートをコードの前の行と組み合わせることができることに注意してください。

res_list = sorted(res, key=lambda x: (float(x[1]), -float(x[2]))
于 2013-07-04T15:37:58.013 に答える