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 Series。之后使用 deep 参数的默认值(“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

在上面的输出块中,我们可以看到初始系列对象和复制的对象。创建副本后,我们在复制的对象的索引位置“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 对象进行任何更改,这些更改也会反映在另一个 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”,但更改也更新到了原始系列中。我们可以在上面的输出块中看到差异。

更新于: 2022年3月9日

3K+ 次浏览

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告