Spec-Zone.ru › pandas 0.25

pandas.Series.copy

Series.copy(self, deep=True) [source]

Создать копию индексов и данных этого объекта.

Когда deep=True (по умолчанию), будет создан новый объект с копией данных и индексов вызываемого объекта. Изменения в данных или индексах копии не будут отражаться в исходном объекте (см. примечания ниже).

Когда deep=False, будет создан новый объект без копирования данных или индекса вызываемого объекта (копируются только ссылки на данные и индекс). Любые изменения в данных оригинала будут отражаться в поверхностной копии (и наоборот).

Параметры:
deep : bool, default True

Создать глубокую копию, включая копию данных и индексов. При deep=False ни индексы, ни данные не копируются.

Возвращает:
copy : Series or DataFrame

Тип объекта соответствует вызываемому объекту.

Примечания

Когда deep=True, данные копируются, но фактические объекты Python не будут копироваться рекурсивно, только ссылка на объект. Это отличается от copy.deepcopy в стандартной библиотеке, которая рекурсивно копирует данные объекта (см. примеры ниже).

Хотя Index объекты копируются, когда deep=True, лежащий в основе массив numpy не копируется по соображениям производительности. Поскольку Index неизменяем, данные в основе можно безопасно совместно использовать, и копия не нужна.

Примеры

>>> s = pd.Series([1, 2], index=["a", "b"])
>>> s
a    1
b    2
dtype: int64
>>> s_copy = s.copy()
>>> s_copy
a    1
b    2
dtype: int64

Поверхностная копия против стандартной (глубокой) копии:

>>> s = pd.Series([1, 2], index=["a", "b"])
>>> deep = s.copy()
>>> shallow = s.copy(deep=False)

Поверхностная копия использует данные и индекс с оригиналом.

>>> s is shallow
False
>>> s.values is shallow.values and s.index is shallow.index
True

Глубокая копия имеет собственную копию данных и индекса.

>>> s is deep
False
>>> s.values is deep.values or s.index is deep.index
False

Обновления данных, используемых поверхностной копией и оригиналом, отражаются в обоих; глубокая копия остается неизменной.

>>> s[0] = 3
>>> shallow[1] = 4
>>> s
a    3
b    4
dtype: int64
>>> shallow
a    3
b    4
dtype: int64
>>> deep
a    1
b    2
dtype: int64

Обратите внимание, что при копировании объекта, содержащего объекты Python, глубокая копия скопирует данные, но не сделает этого рекурсивно. Обновление вложенного объекта данных будет отражено в глубокой копии.

>>> s = pd.Series([[1, 2], [3, 4]])
>>> deep = s.copy()
>>> s[0][0] = 10
>>> s
0    [10, 2]
1     [3, 4]
dtype: object
>>> deep
0    [10, 2]
1     [3, 4]
dtype: object

© 2008–2012, AQR Capital Management, LLC, Lambda Foundry, Inc. and PyData Development Team
Licensed under the 3-clause BSD License.
https://pandas.pydata.org/pandas-docs/version/0.25.0/reference/api/pandas.Series.copy.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API