pandas SettingWithCopyWarning 錯誤

參考資料:
(https://www.dataquest.io/blog/settingwithcopywarning/)

在pandas中可能索引dataframe的時候有可能返回view或者copy,修改view和copy對原始的dataframe作用不同,pandas為了顯式地讓出程序猿知道自己在干什么引入了SettingWithCopyWarning。


如果在索引的基礎(chǔ)上加多一個索引進行賦值,這個時候就會出現(xiàn)SettingWithCopyWarning,提醒程序猿上面的情況。注意多次索引可以是多行操作引起的,先在某一行索引一次,然后再在后面另外一行索引一次進行賦值。

第一種:
同一行的多次索引,下面并不會對data進行真正地修改,data[data.bidder == 'parakeet2004']返回一個新的dataframe,已經(jīng)不再是data了。

data[data.bidder == 'parakeet2004']['bidderrate'] = 100

修改:

data.loc[data.bidder == 'parakeet2004', 'bidderrate'] = 100

第二種:
下面也是多次索引,第一行第一次,第二行第二次,這里的問題是我們?nèi)匀徊恢纖inner是data的view還是copy。這里實際上有修改到data。

winners = data.loc[data.bid == data.price]
winners.loc[304, 'bidder'] = 'therealname'

如果我們不想修改到data,如下,加多了一個copy

winners = data.loc[data.bid == data.price].copy()
winners.loc[304, 'bidder'] = 'therealname'

總結(jié):如果你想修改原始數(shù)據(jù)(view),用一次索引;如果不想修改原始數(shù)據(jù)(copy),請確保pandas做了。

文中還是介紹了怎么修改這種警告。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容