对于python中的pandas DataFrames,多个成员方法都有一个inplace
参数,据称它允许你不创建对象的副本,而是直接修改原始对象 。
[*编辑补充: 然而,事实证明并非如@ juanpa. arrivillaga所指出的那样。inplace=True
确实复制数据,只更新与修改对象关联的指针,因此与手动重新分配原始对象名称相比,几乎没有什么优势。]
我在网上看到的使用inplace=True
的示例不包括使用链接的示例。相关SO线程中的这条评论可能是为什么我在任何地方都看不到这样的例子的答案:
你不能在适当的位置上操作in-place ops返回None并断开链
但是,如果你把一个inplace=True
放在链的最后一个条目中,“就地链接”会起作用吗?[Edited to add: no]或者这相当于尝试更改在链中较早的链接中创建的副本,因为它不再是您的原始对象,在链语句完成后“丢失”?[ 编辑后加上:* 是;参见答案here]
大数据对象的使用似乎排除了链接的概念,而不具备就地这样做的能力,至少在保持低存储器开销和高计算速度的期望范围内。是否有pandas的替代实现,例如一个等价的R的data.table在Python中可用,可能适合我的需要?或者,我唯一的选择是不链接(并快速计算),或者链接但创建数据的冗余副本,至少是暂时的?
2条答案
按热度按时间7rfyedvj1#
我们试试看。
预期:
结果:
答:否,链末端的
inplace=True
不会修改原始数据框架。whlutmcx2#
如果你真的想要它,你可以像这样创建一个 Package 器(未经测试):