参考资料:
(https://www.dataquest.io/blog/settingwithcopywarning/)
在pandas中可能索引dataframe的时候有可能返回view或者copy,修改view和copy对原始的dataframe作用不同,pandas为了显式地让出程序猿知道自己在干什么引入了SettingWithCopyWarning。

如果在索引的基础上加多一个索引进行赋值,这个时候就会出现SettingWithCopyWarning,提醒程序猿上面的情况。注意多次索引可以是多行操作引起的,先在某一行索引一次,然后再在后面另外一行索引一次进行赋值。
第一种:
同一行的多次索引,下面并不会对data进行真正地修改,data[data.bidder == 'parakeet2004']返回一个新的dataframe,已经不再是data了。
data[data.bidder == 'parakeet2004']['bidderrate'] = 100
修改:
data.loc[data.bidder == 'parakeet2004', 'bidderrate'] = 100
第二种:
下面也是多次索引,第一行第一次,第二行第二次,这里的问题是我们仍然不知道winner是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'
总结:如果你想修改原始数据(view),用一次索引;如果不想修改原始数据(copy),请确保pandas做了。
文中还是介绍了怎么修改这种警告。