我在抽取了原来DataFrame数据的几列后,对抽取后的数据进行赋值操作时弹出这个警告。
这个警告的后果是可能导致修改
pandas
单元格中的数据失败。
样例代码如下
# 弹出警告的代码
dfc = pd.DataFrame({'a':[1,2,3,4,5,6],'b':[2,3,4,5,6,7]})
dfc2 = dfc[['a']]
dfc2['a'][0] = 100
这个是深浅拷贝的警告
我对其进行一次深拷贝即可解决,这种方式可能会失效
。
# 不 弹出警告的代码
dfc = pd.DataFrame({'a':[1,2,3,4,5,6],'b':[2,3,4,5,6,7]})
dfc2 = dfc[['a']]
dfc2 = dfc2.copy() # 进行一次拷贝
dfc2['a'][0] = 100
换一种方式对 pandas
单元格进行修改
dfc = pd.DataFrame({'a':[1,2,3,4,5,6],'b':[2,3,4,5,6,7]})
dfc2 = dfc[['a','b']]
# 这个命令不会警告
dfc2.loc[3, 'b'] = 'english'
注意:
loc
有一个很类似的api,即iloc
,但我在使用dfc2.iloc[0][0] =111
修改单元格数据时弹出警告,而且修改数据失败。