Python的傲嬌:資料拷貝

 

可能最近某個「看你我有緣,這有本如來神掌,算你十塊錢就好。」的Python課程剛開,打著不需要程式基礎的噱頭,吸引了一堆新手加入,也因此收到了許多相同的問題:為什麼對表2做動作,卻連表1也一起變化了?

在處理結構化資料(DataFrame)的過程中,為了因應後續不同處理方法,通常會保留一份原始資料,完整複製一份出來,針對複製的那份資料作處理。但處理著處理著,卻發現原始資料不見了,或原始資料也被處理了……

如影片舉例,真要複製一份表出來,不能只寫【df2 = df1】,而必須運用copy套件,寫成【df2 = copy.deepcopy(df1)】才是正解。但當然,這意味著它將使用更多的記憶體和暫存空間。

Python傲嬌較令人難以捉摸的,在於某些執行其實Python知道「你這麼寫有問題」,並有提出警示(warning),但「嗯哼~沒關係我還是讓你執行吧~」。這也讓許多玩家(!?)忽略了那些警示,而只單純看到可以執行成功,卻沒意識到執行成功後的內容並非自己想像。