大きな pandas データフレームがあります (サイズ = 3 GB):
x = read.table('big_table.txt', sep='\t', header=0, index_col=0)
メモリの制約の下で作業しているため、データフレームをサブセット化します。
rows = calculate_rows() # a function that calculates what rows I need
cols = calculate_cols() # a function that calculates what cols I need
x = x.iloc[rows, cols]
行と列を計算する関数は重要ではありませんが、元の行と列の小さなサブセットであることは間違いありません。ただし、この操作を行うと、メモリ使用量が大幅に増加します。当初の目標はメモリ フットプリントを 3GB 未満に縮小することでしたが、代わりにメモリ使用量が 6GB をはるかに超えています。
これは、Python がメモリ内にデータフレームのローカル コピーを作成するが、それをクリーンアップしないためだと推測しています。他のことも起こっている可能性があります...私の質問は、大きなデータフレームをサブセット化してスペースをクリーンアップするにはどうすればよいですか? 行/列をその場で選択する関数が見つかりません。
Stack Overflow をたくさん読みましたが、このトピックについてはあまり見つかりません。適切なキーワードを使用していない可能性があるため、提案があればそれも役に立ちます。ありがとう!