Series.copy() 方法在 Pandas 中如何工作?

pandasserver side programmingprogramming更新于 2025/5/18 1:07:17

pandas.Series.copy() 方法用于创建系列对象的索引及其数据(值)的副本。并返回一个复制的系列对象作为结果。

copy() 方法有一个参数,即"deep"。此 deep 参数的默认值为 True。当 deep 参数的输入为"True"时,表示 copy 方法也会对给定的系列索引和数据进行深度复制。

如果 deep 参数的输入为"False",则表示 copy 方法会创建一个对象,而不会复制给定系列对象的数据和索引(它仅复制数据和索引的引用)。

示例 1

import pandas as pd

index = list("WXYZ")

#创建一个 pandas 系列
series = pd.Series([98,23,43,45], index=index)

print(series)

#创建一个副本
copy_sr = series.copy()

print("Copied series object:",copy_sr)

# 更新一个值
copy_sr['W'] = 55

print("objects after changing a value: ")
print(copy_sr)

print(series)

解释

首先,我们使用一个整数值列表创建了一个 pandas Series,其中标有索引"W, X, Y, Z"。之后,使用 deep 参数的默认值("True")创建了一个复制的 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 98
X 23
Y 43
Z 45
dtype: int64

在上面的输出块中,我们可以看到初始系列对象和复制的对象。创建副本后,我们在索引位置"W"处的复制对象中更新了值"55"。我们在复制的 Series 对象中所做的更改不会影响原始 Series。

示例 2

import pandas as pd

index = list("WXYZ")

#创建一个 pandas Series
series = pd.Series([98,23,43,45], index=index)

print(series)

#创建一个副本
copy_sr = series.copy(deep=False)

print("Copied series object:",copy_sr)

copy_sr['W'] = 55

print("objects after changing a value: ")
print(copy_sr)

print(series)

解释

在此示例中,我们更改deep 参数的默认值从 True 改为 False。因此,copy 方法会复制 Series 对象,并引用索引和数据的 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",但原始系列中的更改也会更新。我们可以在上面的输出块中看到差异。


相关文章