Pandas DataFrame.copy(~)
方法制作 DataFrame 的副本。您可以选择是否想要深拷贝或一个浅拷贝.
A 深拷贝是一个全新的副本 - 修改 DataFrame 的深层副本不会改变原始 DataFrame,反之亦然。例外情况是当值是 Python 对象时;它们的属性不是递归复制的,因此修改深层复制中的 Python 对象会改变原始对象,反之亦然.
A 浅拷贝与原始DataFrame 的数据共享相同的内存块。这意味着如果您修改浅拷贝,则原始的 DataFrame 将发生变异,反之亦然。
参数
1.deep
| boolean
| optional
-
如果
True
,则执行深度复制。 -
如果
False
,则执行浅复制。
默认情况下,deep=True
。
返回值
DataFrame
,它是源 DataFrame 的浅拷贝或深拷贝。
例子
深拷贝
考虑以下 DataFrame :
df = pd.DataFrame({"A":[1,2], "B":[3,4]})
df
A B
0 1 3
1 2 4
我们执行深度复制来创建 df_other
,并将其第一个值更改为 5
:
df_other = df.copy() # deep=True
df_other.iloc[0,0] = 5
df_other
A B
0 5 3
1 2 4
然后我们检查原始 DataFrame df
的状态:
df
A B
0 1 3
1 2 4
我们看到原来的DataFrame 完好无损。这是因为我们执行的是深复制,而不是浅复制。
例外
当 DataFrame 的值是 Python 对象时要小心 - 它们的属性不会递归复制,因此在深层复制中修改它们仍然会改变原始 DataFrame 中的对象。
考虑以下 DataFrame :
df = pd.DataFrame({"A":[[1,2],3], "B":[4,5]})
df
A B
0 [1,2] 4
1 3 5
我们制作 df
的新深层副本,并修改列表的第一个值:
df_other = df.copy(deep=True)
df_other.iloc[0,0][0] = 9 # Modify the first value in the Python list
df
A B
0 [9,2] 4
1 3 5
我们可以看到 df_other
中的更改反映在原始 df
中。反之亦然,即修改 df
中的 Python 列表会改变 df_other
中的 Python 列表。
浅复制
考虑以下 DataFrame :
df = pd.DataFrame({"A":[1,2], "B":[3,4]})
df
A B
0 1 3
1 2 4
我们执行浅复制来创建 df_other
,并将其第一个值更改为 5:
df_other = df.copy(deep=False)
df_other.iloc[0,0] = 5
df_other
A B
0 5 3
1 2 4
然后我们检查原始 DataFrame df
的状态:
df
A B
0 5 3
1 2 4
我们看到原来的DataFrame也被修改了,尽管我们从未直接修改过它。这是因为我们执行的是浅复制,而不是深复制。
此外,更改 df
也会修改 df_other
:
df.iloc[0,0] = 6
df_other
A B
0 6 3
1 2 4
相关用法
- Python PySpark DataFrame collect方法用法及代码示例
- Python PySpark DataFrame coalesce方法用法及代码示例
- Python Pandas DataFrame corrwith方法用法及代码示例
- Python PySpark DataFrame corr方法用法及代码示例
- Python Pandas DataFrame convert_dtypes方法用法及代码示例
- Python Pandas DataFrame combine方法用法及代码示例
- Python Pandas DataFrame columns属性用法及代码示例
- Python PySpark DataFrame cov方法用法及代码示例
- Python Pandas DataFrame count方法用法及代码示例
- Python PySpark DataFrame colRegex方法用法及代码示例
- Python PySpark DataFrame columns属性用法及代码示例
- Python PySpark DataFrame count方法用法及代码示例
- Python Pandas DataFrame corr方法用法及代码示例
- Python Pandas DataFrame combine_first方法用法及代码示例
- Python Pandas DataFrame cov方法用法及代码示例
- Python Pandas DataFrame clip方法用法及代码示例
- Python Pandas DataFrame cummax方法用法及代码示例
- Python Pandas DataFrame cumprod方法用法及代码示例
- Python Pandas DataFrame cummin方法用法及代码示例
- Python Pandas DataFrame cumsum方法用法及代码示例
- Python Pandas DataFrame empty属性用法及代码示例
- Python Pandas DataFrame pop方法用法及代码示例
- Python Pandas DataFrame nsmallest方法用法及代码示例
- Python Pandas DataFrame sample方法用法及代码示例
- Python Pandas DataFrame items方法用法及代码示例
注:本文由纯净天空筛选整理自Isshin Inada大神的英文原创作品 Pandas DataFrame | copy method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。