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.12.0。和下面的代碼轉移複製的一系列指標:pandas.series.copy不會創建新對象
import pandas as pd
series = pd.Series(range(3))
series_copy = series.copy()
series_copy.index += 1
如果我現在訪問series
它也有指數移動。爲什麼?
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)
不知道這是否是一個錯誤或什麼,但如果你檢查索引平等,你會看到series_copy.index等於series.index - 'series.index.equals(series_copy.index)'返回'True' –