触发这个警告的代码:
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