2017-07-11 8 views
0

私はPythonでCSVを書くのがとても新しく、これまで必要なものを見つけることができません。私はいくつかのデータを収集するために、アルゴリズムをX回実行しています(10としますが、100または1000にすることもできます)。CSV列にリストを書く

  • ステップ1:正確には、私は次のことをやって設定するアルゴリズムのインスタンスのサイズは
  • ステップ2:アルゴリズムX回を実行し、各実行の結果を格納
  • ステップ3:インスタンスのサイズを大きく、ステップ2の終わりに2

に進み、私はこのように見ているリストを持っている:メッセージの

番号は、各イテレーションに交換:
[13.181238, 10.0, 10.0, 10.0, 13.181238, 10.0, 10.0, 10.0, 16.362476, 10.0]

このリストは、列としてcsvファイルに書きたいと思います。次に、新しいインスタンスでアルゴリズムを呼び出すと、すべてが完了するまで、新しいリストを自分のCSVファイルの新しい行として追加します。

ファイルには、そのようになります。

Call 1  Call2  Call3 ... Call N 
13.181238 20.0 
10.0  23.181238 

それはそうすることは可能ですか?

+1

これまでに何を試みましたか? –

+0

何をしようとしていますか? –

+0

私はもっと知ることなく、あなたのアルゴリズムを実行して、実行、時間などに関連するメタデータを保存しようとしているように思えます。 – Fallenreaper

答えて

1

CSVモジュールは書き込み行をサポートしているため(一般にファイルは1行ずつ書き込まれるため)、これを実現する方法があります。すべての情報をテンポラリファイルに書き込んでおくと、メモリに保持する必要がなくなり、すべてのベンチマーキングが完了するとCSVファイルがピボットされ、行が列に変換されます。

import csv 
from itertools import izip 
a = izip(*csv.reader(open("tempfile.csv", "rb"))) 
csv.writer(open("output.csv", "wb")).writerows(a) 

ファイルがメモリに足りない場合は、問題なく動作します。

あなたが定期的にこれを繰り返す必要があり、これが迅速になりたい、とあなたは巨大な依存関係を導入する気にしない場合は、パンダを考慮してください。

import pandas as pd 
pd.read_csv('tempfile.csv').T.to_csv('output.csv',header=False) 

をあなたが得るボーナスとしてT操作 - 基礎となる データフレーム(pd.read_csv('tempfile.csv')で作成)を転置します。

CSVでPythonでできることは、通常はパンダでうまくいきます。

+0

ヒントありがとう、私はパンダを知らなかった。私は依存関係を一切使用しても構わないので、大丈夫です。やってみます。 – Ecterion

関連する問題