由深拷贝浅拷贝想到pandas里的copy

《Fluent Python》第八章里讲到深拷贝和浅拷贝,然后我想到了常用的pandas里的copy:
在这里插入图片描述
看上去deep是控制深拷贝或者浅拷贝,但是下面这段又解释说deep=True的时候,数据中的Python对象不是递归得拷贝,而是对对象的引用,这和标准库里的深拷贝不同。赋值索引对象这种不可变对象,出于性能原因,拷贝是不需要的,引用就足够安全:
在这里插入图片描述
我不理解!于是去查相关资料。

这个回答讲到说深拷贝在pandas里面不起作用,因为开发者认为在DataFrame中嵌入可变对象是一种反模式。好吧,如果DataFrame里不包含可变对象或者可变对象的复核对象,那深拷贝和浅拷贝就没有区别,所以为了性能就都是浅拷贝。

那么deep这个参数到底是干啥的呢?或者说deep=True or False有什么区别呢?

这个回答提出了一个例子,里面用到了update函数。

总结一下,pandas里的copy都是浅拷贝,如果你要拷贝出的对象和原对象毫无关系,不需要管deep参数,用 b = a.copy() 就完事了。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值