2013-06-07 12 views
7

私はこの質問がconcatの実装についていくつかの洞察を必要とすると思います。は、パンダがインプレイス関数と連結していますか?

私は30ファイル、それぞれ1G、私は32 Gのメモリを使用することができます。私は 'list_of_pieces'と呼ばれるDataFramesのリストにファイルをロードしました。このリストは〜30Gサイズでなければなりませんか?

「pd.concat(list_of_pieces)」を実行すると、concatはヒープに別の30G(または多分10G 15G)を割り当て、いくつかの操作を実行するか、または新しいメモリを割り当てずに 'インプレース'の連結を実行しますか?

誰でも知っていますか?

ありがとうございます!

+1

私は考えていない*それはインプレースだ...あなたは実際にはそれを多くのことをメモリに読んでみたいとは思わない(計算を実際に行う余裕はない)!私は[HDF5ストア](http://pandas.pydata.org/pandas-docs/stable/io.html#hdf5-pytables)があなたにとってはるかに良い選択だと思います。 –

+0

@AndyHayden、私はメモリ内のデータのサイズが必要ではないかと心配しています。私はいくつかのインタラクティブな解析が必要です:-( –

答えて

7

答えはいいえ、これはインプレース操作ではありません。 np.concatenateは、ボンネットの下に使用され、ここを参照してください:Concatenate Numpy arrays without copying

問題へのより良いアプローチはHDFStoreテーブルにこれらの作品のそれぞれを記述することで、ここを参照してください:ここでのドキュメントのためのhttp://pandas.pydata.org/pandas-docs/dev/io.html#hdf5-pytables、および:http://pandas.pydata.org/pandas-docs/dev/cookbook.html#hdfstoreいくつかのrecipiesのために。

そして、データがディスク上である場合の動作の

ある種でも行うことができ、必要に応じて(クエリにより又は偶数行)どの部分(あるいは全セット)を選択することができる:https://github.com/pydata/pandas/issues/3202?source=cc、及びここに:http://pytables.github.io/usersguide/libref/expr_class.html#

関連する問題