SettingWithCopyWarning

警告分析

这个警告常常在对一个dataframe进行切片的操作上。

SettingWithCopyWarning 告诉你,你的操作可能没有按预期运行,需要检查结果以确保没有出错。

如果代码确实按预期工作,那么我们会很容易忽略该警告,但是 SettingWithCopyWarning 不应该被忽略。

在进行下一步操作之前,我们需要花点时间了解这一警告显示的原因。

要了解 SettingWithCopyWarning,首先要知道,Pandas 中的某些操作会返回数据的视图(View),某些操作会返回数据的副本(Copy)。

返回视图,那么代表修改了原数据;

返回副本,那么代表产生了一个变量来保存数据;

 

底层原理是“链式索引”,即两个个索引操作连接在一起。

 

解决问题的方案

方案1(最正确的方案)

这种情况对应的解决方案很简单:使用 loc 将两次链式操作组合成一步操作,确保 Pandas 进行 Set 的是原始 DataFrame。

方案2

明确的将切片操作取copy() 对象。

方案3(最不建议,还是忘了吧。。。)

关闭pandas的警告

pd.set_option('mode.chained_assignment', None)

 

posted @ 2020-10-28 20:32  周周和奇奇  阅读(1228)  评论(0编辑  收藏  举报