pandas 中的复制操作警告 SettingWithCopyWarning

触发这个警告的代码:
df["cc"] = "cc1"

问题起因:
假设你要选取B列的数据,要求其关联的A列数据大于5
方法1:df[df.A > 5]['B']
方法2:df.loc[df.A > 5, 'B'] = 4

以上两种方法操作返回的结果是一样的,如果你只是看这些值得话,返回的结果没有任何区别。
那么,关键点在哪?在于通常很难判断返回的是view还是copy。

当过滤(filter)数据集(DataFrame)时,对数据集进行切片或者引用操作有可能会返回一个视图(view),也可能返回一个副本(copy),
这取决于内在的程序设计或者各种执行细节。
View顾名思义,就是对原始数据的观察,因此修改视图也可能会直接改变原数据。另一方面,副本(copy)是对原数据的复制,因此修改副本对于原数据没有影响。

如何关掉这个警告:
df2 = df[['A']].copy(deep=True)
df2['A'] /= 2

 

posted @ 2020-08-07 16:51  周周和奇奇  阅读(391)  评论(0编辑  收藏  举报