pandas - Pandas 数据框复制有什么作用?

标签 pandas virtual-memory

我的问题基本上是 dataframe.copy() 使用写时复制吗?

我猜测(我可能是错的)当有人调用 dataframe.copy() 时,它会在某处调用 malloc 来为新数据帧分配虚拟内存。我相信 malloc 不会初始化虚拟内存,因此它是写时复制并且不会发生物理数据移动。这意味着调用 copy() 时没有数据帧的真正副本。

但是,调用 dataframe.copy() 确实需要时间并增加我的内存占用。所以看起来它确实正在制作数据的物理副本。我的推理哪里错了?

最佳答案

使用默认的deep=True,它肯定会分配新的内存,但它也会立即复制数据。所以内存占用会立即增加。它不会对 .copy(deep=True).copy(deep=False) 执行写入时复制。当您执行deep=False时,两个DataFrame将使用相同的数据,当您执行deep=True时,数据将被复制。仅当您分配了内存并且从未在其中放置任何内容时,Malloc 不初始化新内存的情况才与此相关。

列只是由 numpy ndarray 支持的 Series 对象。而且它们不进行写时复制(请参阅 NumPy Array Copy-On-Write )。

关于pandas - Pandas 数据框复制有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62290594/

相关文章:

python - 使用 Pandas 创建 NumPy 数组

python - 如何加快pandas中的条件groupby sum

python - 在数据帧上乘以向量 - 向量化

operating-system - 虚拟内存页面替换算法

c++ - 有关我的程序正在使用的虚拟内存的信息?

python - pd.date_range 在月底返回起始值,然后继续每月日期?

python - 从字典创建数据框,键和值都是行

c++ - 进程在不同机器上的虚拟内存大小

c - 直接访问进程内存

windbg - 将 .dvalloc 的结果存储到变量中