パンダはmany output formatsです。データフレームに行を反復的に追加し、すぐにディスクに書き込むのに最適なのはどれですか?プログラムやマシンがクラッシュした場合、最後に計算された行はまだ保存され、結果のデータファイルは破損していませんか?パンダのデータフレームを行単位でディスクに保存する
この機能の例は、個々のto_*()
関数のドキュメントストリングで見つかりませんでした。
パンダはmany output formatsです。データフレームに行を反復的に追加し、すぐにディスクに書き込むのに最適なのはどれですか?プログラムやマシンがクラッシュした場合、最後に計算された行はまだ保存され、結果のデータファイルは破損していませんか?パンダのデータフレームを行単位でディスクに保存する
この機能の例は、個々のto_*()
関数のドキュメントストリングで見つかりませんでした。
あなたは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)
一つの解決策であろうデータフレームに降伏する前にディスクに書き込むカスタムジェネレータを書くこと
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
一般的に、あなたは繰り返しデータフレームの行を追加してはいけません。 http://stackoverflow.com/questions/17141828/pandas-why-should-appending-to-a-dataframe-of-floats-and-ints-be-slower-than-if – acushner
説得力があります。だから私は、私のdfがどれくらい長くなるかを知っていて、最初にそれを作成すると、もう1つの行に値を追加するたびにデータフレームを新たに保存する最良の方法は何でしょうか? – TheChymera
データフレームの大きさはどれくらいですか?毎回全てを保存したいなら、 'df.dropna()〜_ *()'のようなことをするだけでいいです。 – acushner