2016-06-22 8 views
0

パンダはmany output formatsです。データフレームに行を反復的に追加し、すぐにディスクに書き込むのに最適なのはどれですか?プログラムやマシンがクラッシュした場合、最後に計算された行はまだ保存され、結果のデータファイルは破損していませんか?パンダのデータフレームを行単位でディスクに保存する

この機能の例は、個々のto_*()関数のドキュメントストリングで見つかりませんでした。

+0

一般的に、あなたは繰り返しデータフレームの行を追加してはいけません。 http://stackoverflow.com/questions/17141828/pandas-why-should-appending-to-a-dataframe-of-floats-and-ints-be-slower-than-if – acushner

+0

説得力があります。だから私は、私のdfがどれくらい長くなるかを知っていて、最初にそれを作成すると、もう1つの行に値を追加するたびにデータフレームを新たに保存する最良の方法は何でしょうか? – TheChymera

+0

データフレームの大きさはどれくらいですか?毎回全てを保存したいなら、 'df.dropna()〜_ *()'のようなことをするだけでいいです。 – acushner

答えて

2

あなたはpd.HDFStore.append()又はdf.to_hdf(path, 'table_name', append=True)を使用することができ - HDF docsを参照し、そして.append() docs

使用例はdfは、単一の行を表すと、次のようになります。

df.to_hdf('store.h5','table',append=True) 

又は

pd.HDFStore('store.h5).append('table_name', df) 
0

一つの解決策であろうデータフレームに降伏する前にディスクに書き込むカスタムジェネレータを書くこと

data = [(0,1,'a'), (0,2,'b'), (1,2,'c')] 
def writeGen(data_tuples): 
    with open('file.csv', 'w') as f: 
     for data in data_tuples: 
      string = ','.join(str(c) for c in data) + '\n' 
      f.write(string) 
      yield data 

pd.DataFrame(writeGen(data)) 

上記expectd andOutputsようcsvファイルを書き込みます。

0 1 2 
0 0 1 a 
1 0 2 b 
2 1 2 c 
関連する問題