pandas.DataFrame.copy

DateFrame.copy(deep=True) 

复制object的索引和数据

  • 当deep=True时(默认), 会创建一个新的对象进行拷贝. 修改这份拷贝不会对原有对象产生影响.
  • 当deep=False时, 新的对象只是原有对象的references. 任何对新对象的改变都会影响到原有对象

Parameters: deep: bool, default True
Returns: copy: Series, DataFrame or Panel, Object type matches caller

Notes

当deep=True时, 数据会被拷贝, 但是实际的Python对象不会被递归的拷贝, 只有reference指向对象. 这是与标准库中copy.deepcopy的区别, 其递归的拷贝了object data.

当deep=True且是Index对象被拷贝时, 因为性能的原因位于其下的numpy array不会被拷贝. 由于Index是不可变的, 其下的数据可以被安全的分享, 所以拷贝他们是没必要的.

Python对象不会被递归拷贝的举例

在下面这个例子中存在Python的列表对象, 当s的列表对象的元素更改时, deep的也会跟着改动

In [30]: s = pd.Series([[1, 2],[3, 4]])                         

In [31]: s                                                      
Out[31]: 
0    [1, 2]
1    [3, 4]
dtype: object

In [32]: deep = s.copy()                                        

In [34]: s[0][0] = 10                                           

In [35]: s                                                      
Out[35]: 
0    [10, 2]
1     [3, 4]
dtype: object

In [36]: deep                                                   
Out[36]: 
0    [10, 2]
1     [3, 4]
dtype: object
  • 10
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值