pandas 报警告:A value is trying to be set on a copy of a slice from a DataFrame
pandas 报警告:A value is trying to be set on a copy of a slice from a DataFrame我在抽取了原来DataFrame数据的几列后,对抽取后的数据进行赋值操作时弹出这个警告。样例代码如下# 弹出警告的代码dfc = pd.DataFrame({'a':[1,2,3,4,5,6],'b':[2,3,4,5,6,7]})dfc2 = d
·
pandas 报警告:A value is trying to be set on a copy of a slice from a DataFrame
我在抽取了原来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
修改单元格数据时弹出警告,而且修改数据失败。
更多推荐
已为社区贡献19条内容
所有评论(0)