參考資料:
(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做了。
文中還是介紹了怎么修改這種警告。