2017-06-06 66 views
0

我正在使用Spyder 3.1.4中的Anaconda Python 2.7在Windows 7.0 Professional中開發。我也在用熊貓。修復顯然的蟒蛇Python腐敗修復

經過大量的工作後,我得到了一個一致的奇怪問題。 Python/Pandas開始用相同的方式處理兩個具有不同名稱的相同數據框。

我所定義的dataframes如下:

dfa = pd.DataFrame(np.empty(0,dtype=[('Date','datetime64[ns]'), 
            ('column1', 'string'), 
            ('column2','string'), 
            ('column3','string')])) 

我現在複製這個(空)數據框:如下

dfb = dfa 

就在這之後我追加到dfa

dfa.loc[indexvalue,:] = ([item1,item2,item3....]) 

這工作正常,直到涉及許多運行(測試代碼的其他部分)該命令也同時開始同時更新dfb。使用dfb的類似操作會導致相同的更新dfa

我不是軟件包安裝方面的專家,並且已經廣泛地檢查了我的代碼。這似乎是一種腐敗。

有人可以建議如何最好地處理這個問題嗎?我不想開始撕裂我的Anaconda安裝。如果這確實是對環境的腐蝕,那麼修復/重新安裝Anaconda和Spyder的最佳方法是什麼?

在此先感謝。

回答

1

dfb = dfa只是設置爲變量指向同一個對象。如果你更新dfa,你正在更新與dfb相同的對象。這就是熊貓的工作原理。

如果你真的想創建DFA中使用的副本:

dfc = dfa.copy() 

你如何檢查,看看你的變量指向的是指向同一數據幀數據幀的副本:

dfb is dfa 
True 

dfc is dfa 
False 

這不是腐敗。

+0

謝謝!現在你提到它,我記得很久以前的訓練。直到現在,我從來沒有真正遇到過這種情況。 – Windstorm1981