Pandas 如何在内部为合并/连接分配内存?

MRo*_*lin 8 pandas

Pandas 内部函数如何为输出行数不确定的操作分配内存?例如,当连接两个数据帧时,输出行数取决于输入的值。在完成连接之前,您并不真正知道会有多少行。Pandas 会执行两次传递吗?它使用动态数据结构吗?如果有,是哪一个?

use*_*846 0

Pandas 使用可调整大小的数组为输出行数不确定的操作分配内存。

可调整大小的数组被实现为具有动态大小的 numpy 数组。当执行诸如连接之类的操作时,可调整大小的数组从初始大小开始,然后根据需要动态增长以适应操作的结果。这是一次完成的,并且不创建中间数据结构。

调整大小的过程非常高效,因为 numpy 数组在内存中是连续的,这意味着可以通过分配更大的内存块,将现有数据复制到新的内存块,然后释放旧的内存块来完成调整大小。这避免了不断分配和释放内存的开销。