任何人都可以给出一些指针,说明为什么Haskell中的不纯计算被建模为monad?
我的意思是monad只是一个有4个操作的界面,那么建模副作用的原因是什么呢?
这已在前面讨论过,但答案相互矛盾:
我想知道的是:
inplace = False
默认行为?inplace = True
?inplace = True
操作是否"真正"就地进行?inplace
参数,总是默认为False
,意味着原始的DataFrame不受影响,并且操作返回一个新的DF.inplace = True
,操作可能适用于原始DF,但它可能仍在幕后复制,只需在完成后重新分配参考.inplace = False
:df.dropna().rename().sum()...
这很好,并提供延迟评估或更有效的重新排序的机会(虽然我不认为Pandas正在这样做).inplace = True
在可能是底层DF的切片/视图的对象上使用时,Pandas必须进行SettingWithCopy
检查,这是昂贵的.inplace = False
避免这种情况.inplace = True
:reset_index()
运行速度快两倍,并使用峰值内存的一半!).因此,inplace = True
除了专门编写链式语句之外,将copy-vs-view问题放在一边,总是使用它似乎更高效.但这不是默认的熊猫选择,所以我错过了什么?