Pandas series.copy() 方法如何工作
pandas.Series.copy() 方法用于创建系列对象的索引和数据(值)的副本。它将返回一个拷贝的系列对象作为结果。
copy() 方法有一个参数,即 “deep”。 这个 deep 参数的默认值是 True。 当 deep 参数的输入为 “True” 时,它意味着 copy 方法会深度复制给定系列的索引和数据。
如果 deep 参数的输入为 “False”,那么就意味着 copy 方法在创建对象时不会复制给定系列对象的数据和索引(只复制数据和索引的引用)。
示例1
import pandas as pd
index = list("WXYZ")
#create a pandas Series
series = pd.Series([98,23,43,45], index=index)
print(series)
# create a copy
copy_sr = series.copy()
print("Copied series object:",copy_sr)
# update a value
copy_sr['W'] = 55
print("objects after updating a value: ")
print(copy_sr)
print(series)
解释
首先,我们使用带有标记索引“W,X,Y,Z”的整数值列表创建了一个pandas系列。然后创建了一个复制的系列对象,其深度参数的默认值为“True”。
输出
W 98
X 23
Y 43
Z 45
dtype: int64
Copied series object:
W 98
X 23
Y 43
Z 45
dtype: int64
objects after updating a value:
W 55
X 23
Y 43
Z 45
dtype: int64
W 98
X 23
Y 43
Z 45
dtype: int64
在上面的输出块中,我们可以看到初始的series对象和复制的对象。在创建副本之后,我们在索引位置“W”处的复制对象中更新了一个值“55”。我们在复制的Series对象中所做的更改不会影响原始的Series。
示例2
import pandas as pd
index = list("WXYZ")
#create a pandas Series
series = pd.Series([98,23,43,45], index=index)
print(series)
# create a copy
copy_sr = series.copy(deep=False)
print("Copied series object:",copy_sr)
copy_sr['W'] = 55
print("objects after updating a value: ")
print(copy_sr)
print(series)
说明
在这个示例中,我们将deep参数的默认值从True更改为False。因此,copy方法将使用索引和数据的引用ID复制Series对象。
如果我们对任何一个Series对象进行任何更改,这些更改也会反映在其他的系列对象上。
输出
W 98
X 23
Y 43
Z 45
dtype: int64
Copied series object: W 98
X 23
Y 43
Z 45
dtype: int64
objects after updating a value:
W 55
X 23
Y 43
Z 45
dtype: int64
W 55
X 23
Y 43
Z 45
dtype: int64
在创建了副本之后,我们只更新了副本系列中索引位置”W”处的值为”55″,但是这些改变也反映在原始系列中。我们可以在上面的输出块中看到这些差异。