当前位置:   article > 正文

【Python】pandas.DataFrame.copy函数方法的使用_dataframe copy函数

dataframe copy函数

转载自levi的博客:pandas.DataFrame.copy函数方法的使用

DataFrame.copy(deep=True)

复制此对象的索引和数据。

deep=True(默认)时,将使用调用对象的数据和索引的副本创建新对象。对副本的数据或索引的修改不会反映在原始对象中(请参阅下面的注释)。

deep=False,将创建一个新对象而不复制调用对象的数据或索引(仅复制对数据和索引的引用)。对原始数据的任何更改都将反映在浅层副本中(反之亦然)。

属性说明
参数deepbool,默认为True
创建深层副本,包括数据和索引的副本。随着deep=False无论是指数还是数据复制。
返回copySeriesDataFramePanel
对象类型与调用者匹配。

Notes

deep=True,数据被复制但实际的Python对象不会被递归复制,只能引用该对象。这与标准库中的copy.deepcopy形成对比,后者以递归方式复制对象数据(请参阅下面的示例)。

在Index复制对象时deep=True,由于性能原因,不会复制基础numpy数组。由于Index是不可变的,因此可以安全地共享基础数据并且不需要副本。

例子

>>> s = pd.Series([1, 2], index=["a", "b"])
>>> s
a    1
b    2
dtype: int64
>>> s_copy = s.copy()
>>> s_copy
a    1
b    2
dtype: int64
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

浅拷贝与默认(深层)拷贝:

>>> s = pd.Series([1, 2], index=["a", "b"])
>>> deep = s.copy()
>>> shallow = s.copy(deep=False)
  • 1
  • 2
  • 3

浅拷贝与原始数据共享数据和索引。

>>> s is shallow
False
>>> s.values is shallow.values and s.index is shallow.index
True
  • 1
  • 2
  • 3
  • 4

深层副本具有自己的数据和索引副本。

>>> s is deep
False
>>> s.values is deep.values or s.index is deep.index
False
  • 1
  • 2
  • 3
  • 4

浅拷贝和原始数据共享的数据的更新反映在两者中; 深拷贝保持不变。

>>> s[0] = 3
>>> shallow[1] = 4
>>> s
a    3
b    4
dtype: int64
>>> shallow
a    3
b    4
dtype: int64
>>> deep
a    1
b    2
dtype: int64
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

请注意,复制包含Python对象的对象时,深层副本将复制数据,但不会以递归方式复制。更新嵌套数据对象将反映在深层副本中。

>>> s = pd.Series([[1, 2], [3, 4]])
>>> deep = s.copy()
>>> s[0][0] = 10
>>> s
0    [10, 2]
1     [3, 4]
dtype: object
>>> deep
0    [10, 2]
1     [3, 4]
dtype: object
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/153291
推荐阅读
相关标签
  

闽ICP备14008679号