pandas.series.copy не создает новый объект
Я использую панды версии 0.12.0. и следующий код, который сдвигает индекс скопированного ряда:
import pandas as pd
series = pd.Series(range(3))
series_copy = series.copy()
series_copy.index += 1
Если я сейчас доступ series
он также имеет смещенный индекс. Зачем?
1 ответ
Решение
copy
определяется как помощник для копирования базовых массивов, а функция не копирует индекс. Смотрите исходный код:
Definition: series.copy(self, order='C')
Source:
def copy(self, order='C'):
"""
Return new Series with copy of underlying values
Returns
-------
cp : Series
"""
return Series(self.values.copy(order), index=self.index,
name=self.name)
index
остается разделенным на строительство. Если вам нужна более глубокая копия, просто используйте непосредственно Series
конструктор:
series = pd.Series(range(3))
...: series_copy = pd.Series(series.values.copy(), index=series.index.copy(),
...: name=series.name)
...: series_copy.index += 1
series
Out[72]:
0 0
1 1
2 2
dtype: int64
series_copy
Out[73]:
1 0
2 1
3 2
dtype: int64
В 0,13 copy(deep=True)
является интерфейсом по умолчанию для копирования, который решит вашу проблему. ( Исправление здесь)