Pandas操纵DataFrame inplace而不是inplace(inplace = True vs False)

时间:2017-11-12 04:54:27

标签: python pandas memory

我想知道当我们选择就地操作数据帧时是否显着降低了内存使用量(与非就地相比)。

我已经对Stack Overflow进行了一些搜索并遇到了这个post,答案说明如果一个操作没有就地完成,那么会返回一个数据帧的副本(我猜当有一个名为' inplace' P)的可选参数时,这有点明显。

如果我不需要保留原始数据框架,那么只修改数据框架是否有益(而且合乎逻辑)?

上下文

我试图在按特定列排序时获取顶部元素'在数据框中。我想知道这两个中哪一个更有效率:

就地:

df.sort('some_column', ascending=0, inplace=1)
top = df.iloc[0]

VS

复制:

top = df.sort('some_column', ascending=0).iloc[0]

对于'副本'虽然我没有将副本分配给变量,但是在排序时它仍然会在制作副本时分配内存吗?如果是这样,从内存中释放该副本需要多长时间?

提前感谢任何见解!

1 个答案:

答案 0 :(得分:1)

通常,inplace=True与返回显式副本之间没有区别 - 在两个情况下,都会创建副本。碰巧的是,在第一种情况下,副本中的数据被复制回原始df对象,因此不需要重新分配。

此外,请注意,自v0.21起,df.sort已弃用,请改用sort_values