赋值(Assignment) - 设置某些变量值的操作,例如
data = pd.read_csv(‘**.csv’)
访问(Access) - 返回某些值的操作,例如下面的索引和链式索引示例
索引(Indexing) - 引用数据子集的任何赋值或访问方法,例如 data[1:5]
链式索引(Chaining) - 连续使用多个索引操作,例如data[1:5][1:3]
4 链式赋值
链式赋值是链式索引和赋值的组合。造一组数据,让它出现这个warning
可以看到,我们很容易地就调出了这个warning,并且可以看出链式赋值的基本操作过程,首先,df[df[‘name’]] 返回的是副本,也就是重新生成了一个对象,然后再对满足条件的行,其列score赋值,当然和原数据没有任何关系了。
5 配置警告
Pandas 的 mode.chained_assignment 选项可以采用以下几个值之一:
‘raise’ - 抛出异常(exception)而不是警告
‘warn’ - 生成警告(默认)
None - 完全关闭警告
例如,如果要关闭警告:
因为这样没有给我们任何警告,除非你完全了解自己在做什么,否则不建议这样做。如果你对想要实现的操作有任何一丁点的疑问,关闭警告都不被推荐。有些开发者非常重视 SettingWithCopy 甚至选择将其提升为异常,这样可以避免某些超出预期的行为出现。
6 追溯历史
你可能想知道为什么要造成这么混乱的现状,为什么不明确指定索引方法是返回视图还是副本,来完全避免 SettingWithCopy 问题。要理解这一点,我们必须研究 Pandas 的过去。
感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的:
① 2000多本Python电子书(主流和经典的书籍应该都有了)
② Python标准库资料(最全中文版)
③ 项目源码(四五十个有趣且经典的练手项目及源码)
④ Python基础入门、爬虫、web开发、大数据分析方面的视频(适合小白学习)
⑤ Python学习路线图(告别不入流的学习)
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**