pandas SettingWithCopyWarning 错误

参考资料:
(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做了。

文中还是介绍了怎么修改这种警告。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容