我想这个问题需要深入了解concat的实现.
说,我有30个文件,每个1G,我最多只能使用32G内存.我将文件加载到DataFrames列表中,称为"list_of_pieces".这个list_of_pieces的大小应该是~30G,对吧?
如果我执行'pd.concat(list_of_pieces)',concat会在堆中分配另一个30G(或者可能是10G 15G)并执行一些操作,还是在不分配新内存的情况下"就地"运行连接?
谁知道这个?
谢谢!
Jef*_*eff 11
答案是否定的,这不是就地操作; np.concatenate在引擎盖下使用,请参见此处:连接Numpy数组而不复制
解决问题的一个更好的方法是将每个部分写入HDFStore
表中,请参见此处:http://pandas.pydata.org/pandas-docs/dev/io.html#hdf5-pytables for docs,此处: http :某些收件人: //pandas.pydata.org/pandas-docs/dev/cookbook.html#hdfstore.
然后你可以根据需要选择任何部分(甚至整个集合)(通过查询甚至行号)
当数据在磁盘上时,甚至可以进行某些类型的操作:https://github.com/pydata/pandas/issues/3202?source = cc,此处:http://pytables.github.io/usersguide /libref/expr_class.html#