2017-10-27 15 views
0

私は1つの.fastaファイルを読み込み、単一の遺伝子配列を分析し、その配列に基づいて計算を行い、計算結果を単一のpandasデータフレームに整理するコードを書いています。 CSVファイル。複数のパンダデータフレームを1つの.csvファイルにエクスポートするにはどうすればよいですか?

最近、複数のシーケンスを含む.fastaファイルを解析するためにコードを更新しましたが、現在のフォームのコードはシーケンスごとに1つの.csvファイルをエクスポートします。 .fastaファイルに多数のシーケンス(たとえば100以上)が含まれている場合、非常に多くの.csvファイルを並べ替えなければならない場合は面倒です。

代わりに、私は各パンダのデータフレームを単一の.csvファイルにエクスポートするようにしています。しかし、これを実現するためにコードを設定する方法がわかりません。現在、コードはdict(.fastaファイルのシーケンスが格納されている)の値を反復するforループをベースにしています。各反復では、関連する計算結果の完全なdictを作成する関数が呼び出され、pandasデータフレームを作成してdictの情報で満たし、.csvファイルとしてエクスポートする別の関数が呼び出されます。

import pandas as pd 
from os import path 

for seq in seq_dict.keys(): 
    result_dict= calculator_func(seq_dict[seq]) 
    results_df= data_assembler(result_dict) 
    results_df.to_csv(path.join(output_dir, "{}_dataframe.csv".format(project_name) 

また、データフレームのインデックスはすべて、関連するシーケンス内の数値位置に基づいていることにも注意してください。

いずれにしても、すべてのデータフレームを1つの.csvファイルにまとめる方法を正確に把握しようとしていますが、インデックスでユーザーに教えることができます。その列からの行はfromおよびbである。その行が基づいているシーケンス内のどの位置にあるかを示す。誰かが私に何らかのアプローチを勧めてもらえますか?

答えて

1

文字列を含め、任意のインデックスを設定できます。この例を試してみてください。

import pandas as pd 

test_frame = pd.DataFrame({"Sequence":[1,2],"Position":[3,4]}) 
test_frame.index = "Sequence:" + test_frame['Sequence'].astype(str) + "_" + "Position:" + test_frame['Position'].astype(str) 
test_frame 
+0

私はあなたが好きであることにデータフレームにインデックスを設定することができることを知っているが、どのように私は1つの.csvファイルへのためのループによって生成されたすべてのデータフレームをエクスポートすることができますか?私は、ループの前に空のデータフレームを作成し、各ループのためにそれを記入する必要がありますか?どのようにインデックスを構造化すればいいですか?私の機能の構造が何であるか教えてください。 –

+1

すべてのデータフレームに同じ列名がありますか?新しいインデックスを割り当てたら、巨大なマスターデータフレームに追加するか、マスターデータフレームに連結してエクスポートすることができます。例えば : 'master_frame = test_frame1'続く : ' master_frame = master_frame.append(test_frame2) ' https://pandas.pydata.org/pandas-docs/stable/merging。 html – sbonin

+0

私は、forループの前に空のリストを作成し、構築された各データフレームをリストに追加し、最後のデータフレームを作るために 'final_dataframe = pd.concat(total_list_of_dfs) 'を使用してデータフレームをマージしました。ご協力いただきありがとうございます! –

関連する問題