2013-11-14 37 views
5

我使用熊貓版本0.12.0。和下面的代碼轉移複製的一系列指標:pandas.series.copy不會創建新對象

import pandas as pd 
series = pd.Series(range(3)) 
series_copy = series.copy() 
series_copy.index += 1 

如果我現在訪問series它也有指數移動。爲什麼?

+0

不知道這是否是一個錯誤或什麼,但如果你檢查索引平等,你會看到series_copy.index等於series.index - 'series.index.equals(series_copy.index)'返回'True' –

回答

5

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)是copy的默認界面,將解決您的問題。 (Fix is here