我有一个大熊猫数据框(大小 = 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 在内存中创建了数据帧的本地副本,但没有清理它。可能还有其他事情正在发生......所以我的问题是我如何子集一个大型数据框并清理空间?我找不到选择行/列的函数。
我已经阅读了很多堆栈溢出,但在这个主题上找不到太多。可能是我没有使用正确的关键字,所以如果您有建议,那也可能会有所帮助。谢谢!