Pandas concat是一个原地函数吗?

2024-04-19 13:18:42 发布

您现在位置:Python中文网/ 问答频道 /正文

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

比如说,我有30个文件,每个文件1G,我最多只能使用32g内存。我将这些文件加载到一个数据帧列表中,称为“list-of-pieces”。这张单子的尺寸应该是30克,对吧?

如果我执行“pd.concat(list_of_pieces)”,concat是否会在堆中再分配30G(或10G 15G)并执行一些操作,或者它在不分配新内存的情况下运行“就地”concat?

有人知道吗?

谢谢!


Tags: 文件of数据内存列表尺寸情况list
1条回答
网友
1楼 · 发布于 2024-04-19 13:18:42

答案是否定的,这不是一个就地操作;np.concatenate是在hood下使用的,请参见:Concatenate Numpy arrays without copying

解决这个问题的一个更好的方法是将这些片段中的每一个写到一个HDFStore表中,参见这里的:http://pandas.pydata.org/pandas-docs/dev/io.html#hdf5-pytables用于docs,以及这里的: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#

相关问题 更多 >