熊猫是否具有就地功能?

时间:2013-06-07 11:23:07

标签: python pandas

我想这个问题需要深入了解concat的实现。

说,我有30个文件,每个1G,我最多只能使用32G内存。我将文件加载到DataFrames列表中,称为“list_of_pieces”。这个list_of_pieces的大小应该是~30G,对吧?

如果我执行'pd.concat(list_of_pieces)',concat会在堆中分配另一个30G(或者可能是10G 15G)并执行一些操作,还是在不分配新内存的情况下“就地”运行连接? / p> 谁知道这个?

谢谢!

1 个答案:

答案 0 :(得分:9)

答案是否定的,这不是就地操作; 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表示某些收件人。

然后你可以根据需要选择任何部分(甚至整个集合)(通过查询甚至行号)

当数据在磁盘上时,甚至可以执行某些类型的操作:https://github.com/pydata/pandas/issues/3202?source=cc,此处:http://pytables.github.io/usersguide/libref/expr_class.html#