这个问题以前也讨论过,但得到的答案相互矛盾:
我想知道的是:
inplace = False
是默认行为?inplace = True
而失败或失常?inplace = True
操作将“真的”进行到位?inplace
参数,总是默认为 False
,这意味着原始的 DataFrame 没有改变,操作返回一个新的 DF。inplace = True
时,操作 也许吧在原始 DF 上工作,但它可能仍然在幕后的副本上工作,只是在完成后重新分配引用。inplace = True
的优点:reset_index()
runs twice as fast and uses half the peak memory!).inplace = False
的优点:df.dropna().rename().sum()...
非常好,并且提供了一个延迟计算或更有效的重新排序的机会(尽管我不认为熊猫正在这样做)。inplace = True
时,熊猫必须做 SettingWithCopy
检查,这是昂贵的。inplace = False
避免了这种情况。因此,抛开复制与视图的问题不谈,总是使用 inplace = True
似乎性能更好,除非专门编写链式语句。但这不是熊猫的默认选择,那么我错过了什么呢?