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”,但更改也更新到了原始系列中。我们可以在上面的输出块中看到差异。
广告