csvに追加するとき、私の最初の行は新しい行ではなく既存の最後の行から始まります。pythonを使用してcsvに追加するときに新しい行を強制する方法pandas .to_csv
私はそれを探し続けますが、私はちょうど追加モードでcsvを開くか、csvに書き込むときに追加モードを使うという基本的な使い方を見ています。 f.write("/n")
で( "/ n")を書き込む前に既存のファイルを開く必要があるように思われるので、ここで受け入れられた答え(to_csv append mode is not appending to next new line)を理解できませんでした。この回答(How to add pandas data to an existing csv file?)は最も関連性がありますが、関数に複数のデータフレームを書き込むことを望んでいますので、それらを開いたままにしたくありません。
a b c d
5 1 ah doo
6 2 bah poo
7 2 dah coo
私は私の機能や、この単純なコードを使用:構造とfoo.csvで、
import os
def mysave(df,dfpath):
# if file does not exist write header
if not os.path.isfile(dfpath):
df.to_csv(dfpath, index = False)
else: # else it exists so append without writing the header
df.to_csv(dfpath, mode = 'a', index = False, header = False)
mysave(mydf, 'foo.csv')
私は非常に簡単な例を作成しました:私の計画のような機能を使用することです:
import pandas as pd
df = pd.read_csv('foo.csv', index_col=False)
mydf = df
mydf.to_csv('foo.csv', mode='a', index = False, header = False)
これはfoo.csvのように終わるものです:
a b c d
5 1 ah doo
6 2 bah poo
7 2 dah coo5 1 ah doo
6 2 bah poo
7 2 dah coo
mydf.to_csv('foo.csv', mode='a', index = False, header = ("/n"))
のような改行文字をヘッダとして追加しようとすると、間違ったヘッダコメントがpandas(正しく)によって無視され、デフォルトのheader = True
になります。
a b c d
5 1 ah doo
6 2 bah poo
7 2 dah cooa b c d
6 2 bah poo
7 2 dah coo
この勧告は私の質問には答えません。私は現在、あなたの提案をしています。私はデータフレーム(グループごとに多数のデータフレーム)を繰り返し作成し、それをすべて.csv(グループ別)に送信します。 'mygroupsでMYGROUP用: D = pd.DataFrame()kの 、MYGROUPでV: もしK == X: #do何かTEMP = makeMyDF(V) D = pd.concat([D、 temp]) d.to_csv(filepath) 'しかし、現在のプロセスには11時間かかります。私は思い出のように多くを保持しないようにしたいと考えていました。 – jessi
データフレームが大きい場合、ディスクに書き込むとウィンドウ時間が長くなります。これらの "ディスク書き込みウィンドウ時間"の間に、マルチプロセッシング(スレッディング)を使用して他の処理を行うことができます。ハードウェア、プロセッサーに依存します。 –