2016-05-18 3 views
-2

私は、別のファイルの列に従ってソートしたいファイルを持っています。両方のファイルに共通の列があり、ソートは最初のファイルのソート方法に従って行う必要があります。例えば別のファイルの列に基づいてファイルをソートする方法はありますか?

: File_1含ま:

chr2L 2808299 2808300 EOG698VMB 4.15912 + 1011 

chr2L 5218259 5218260 EOG6ZPFGT 15.0025 + 91 

chr2L 5329859 5329860 EOG62JPCT 30.1536 + 30 

chr2L 6225049 6225050 EOG60024V 3.26788 + 29 

chr2L 6255843 6255844 EOG61C7HF 12.6259 + 32 

chr2L 6481023 6481024 EOG6CZC26 1.33686 + 176 

chr2L 8522135 8522136 EOG6FN543 40.2544 + 142 

chr2L 9769068 9769069 EOG6FBJDN 17.8248 + 15 

chr2L 9782391 9782392 EOG6R24FN 9.50656 + 393 

File_2が含ま:

chrXL_group1e 895799 895800 EOG67ST24 71.1687 + 62 

chrXL_group1e 3113233 3113234 EOG6PVPKK 7.19303 + 847 

chrXL_group1e 3424413 3424414 EOG6QC1SM 6.76991 + 81 

chrXL_group1e 5698899 5698900 EOG651FCJ 93.5094 + 124 

chrXL_group1e 6595546 6595547 EOG60K8KJ 28.349 + 185 

chrXL_group1e 7594832 7594833 EOG6C2HX6 1.7771 + 2782 

chrXL_group1e 8307304 8307305 EOG6NP7QS 229.754 + 35 

chrXL_group1e 9922625 9922626 EOG6X3HMJ 8.8855 + 3744 

chrXL_group1e 10297871 10297872 EOG6F7P63 2.70796 + 106 

chrXL_group1e 11284647 11284648 EOG62Z5BX 282.474 + 4173 

chr4_group5 213215 213216 EOG6J9NKZ 834.56 + 32 

chrXR_group5 636614 636615 EOG6PVPK4 4.56969 + 152 

をIカラム4(タンパク質ID)で与えられた順序に従ってFile_2の内容をソートしたいのFile_1。 (例には違いがありますので、元のファイルをアップロードすることもできます) どうすればよいですか?Python
タンパク質IDが特定の方法でソートされているとは思いません。しかし、File_1でソートされる方法は重要です。

その他の詳細:

プログラミング言語:Pythonの3.5.1

OS:あなたの答えのためのUbuntu 16.04 LTSは

感謝。 :)

+0

あなたの例では、ファイル2の情報がファイル1の情報とどのように関連しているかを確認するのが難しくなります(最初の列で何らかの形で一致していますか?) –

+0

dictマッピング列要素を使用して、並べ替え順序とその辞書を並べ替えのキーとして使用 –

+0

@NilsGudatいいえ、私は4番目の列に一致しています。両方のファイルで4番目の列の順序が同じである必要があります。 – DarkRose

答えて

-1

関数sortedは、リストの各要素に匹敵する引数を返す関数であるkeyというキーワード引数を受け取ることができます。

あなたが他に1で中File_1列とFile_2列を持つ二つのリストを持っている場合は、あなたが使用できます。

私は、 `DataFrame`パンダとして両方のファイルを読み込むと言うでしょう。一般に
indexes = sorted(range(len(File_2Column)), key=lambda i: File_1Col4[i]) 
sortedFile_2Col = [File_2Column[i] for i in indexes] 
# you can repeat this line for all the columns you want to be sorted by that order 
+0

ファイル全体をどのように並べ替えるのですか?それに応じて他の列も変更する必要があります。 – DarkRose

+0

'indexes'を割り当てた後、次の行を使って任意の列を並べ替えることができます:' sortedFile_2Col = [インデックスのiの場合はFile_2Column [i]] ' –

関連する問題