姬長信(Redy)

python – 熊猫 – 就位=真正被认为有害或无…


这已在前面讨论过,但答案相互矛盾:

> in-place is good!
> in-place is bad!

我想知道的是:

>为什么inplace = False是默认行为?
>什么时候改变它好? (好吧,我被允许改变它,所以我想这是有原因的).
>这是安全问题吗?也就是说,由于inplace = True,操作是否会失败/行为异常?
>我是否可以提前知道某个地点=真正的操作是否“真正”就地进行?

我到目前为止:

>许多Pandas操作都有一个inplace参数,总是默认为False,这意味着原始的DataFrame不受影响,并且操作返回一个新的DF.
>当设置inplace = True时,操作可能对原始DF有效,但它可能仍然在幕后复制,只需在完成后重新分配参考.

inplace的优点=错误:

>允许链接/功能语法:df.dropna().rename().sum()…这很好,并提供了懒惰评估或更有效的重新排序的机会(虽然我不认为Pandas是这样做).
>在可能是底层DF的切片/视图的对象上使用inplace = True时,Pandas必须执行SettingWithCopy检查,这是很昂贵的. inplace = False避免这种情况.
>一致&幕后可预测的行为.

inplace的优点=真:

>可以更快,更少内存占用(第一个链接显示reset_index()运行速度快两倍,并使用峰值内存的一半!).

因此,将copy-vs-view问题放在一边,除非专门编写链式语句,否则总是使用inplace = True似乎更有效.但这不是默认的熊猫选择,所以我错过了什么?