函数之间的Pandas Dataframe 共享不起作用

9q78igpj  于 2023-02-07  发布在  其他
关注(0)|答案(1)|浏览(105)

我有一个用几个并发函数(asyncio协程)修改panda Dataframe 的脚本。每个函数都向 Dataframe 添加行,并且所有函数共享同一个列表是很重要的。然而,当我用pd.concat添加一行时, Dataframe 的一个新副本被创建了。我可以分辨出来,因为每个 Dataframe 现在都有一个不同的内存位置,如id()所示。
因此,函数不再共享同一个对象。我如何保持所有函数指向一个公共 Dataframe 对象?
请注意,当我使用append方法时,这个问题不会出现,但该方法已被弃用。

mwngjboj

mwngjboj1#

Pandas Dataframe 是高效的,因为它们使用连续的内存块,通常是像int和float这样的基本类型。你不能只添加一行,因为 Dataframe 不拥有它必须扩展到的下一个内存位。级联通常需要分配新的内存和复制数据。一旦发生这种情况,引用原始 Dataframe
如果你知道你想要的最终大小,你可以预分配和填充。否则,你最好保持一个新 Dataframe 的列表,并把它们一次连接起来。因为这些是并行过程,它们不依赖于彼此的输出,所以这可能是一个可行的选择。

相关问题