2016-07-18 8 views
1

のは、私が.datファイル、filename.datを持っている、と私はパンダデータフレームにこれを読みたいとしましょうか?私は、1TBのサイズのファイルに対してデータフレームの列を個別に保存することを望んでいました。これは可能ですか?私は、次のような何かをしたい、コメントで述べたchunksizeの使用に拡大することPandasのread_table()にサイズ制限がありますか?</p> <pre><code>import pandas as pd df = pd.read_table('filename.dat') </code></pre> <p>このについてのサイズ制限があります:

+1

結果のDFがメモリに収まる場合は可能です。大きなファイルをチャンクで読み込むために 'chunksize'パラメータを使用してください - これはメモリをもっと節約します。 – MaxU

+0

@MaxUのようにメモリがない場合はお勧めできません。もし行をやっていたら@MaxUで述べた 'chunksize'で[buffering](http://pandas.pydata.org/pandas-docs/stable/io.html#io-chunking)を使う方がいいですし、 iterator'をTrueに設定します。しかし、列と大きなファイルの場合、これは危険なようです。 –

+0

@ClaytonWahlstromその他の推奨事項はありますか? – ShanZhengYang

答えて

1

chunks = pd.read_table('filename.dat', chunksize=10**5) 
fileout = 'filname_{}.dat' 
for i, chunk in enumerate(chunks): 
    mode = 'w' if i == 0 else 'a' 
    header = i == 0 
    for col in chunk.columns: 
     chunk[col].to_csv(fileout.format(col), index=False, header=header, mode=mode) 

あなたはおそらくあなたのための最も効率的だものを見るためにchunksizeパラメータを試したいと思うでしょうデータ。

私がenumerateを使用している理由は、最初のチャンクが読み込まれたときにヘッダーで新しいファイルを作成し、後続のチャンクにヘッダーを付けずに追加することです。

関連する問題