A value is trying to be set on a copy of a slice from a DataFrame .loc 解决方案

最近发现代码里很多这个warn,本来不影响代码的,但是太多了看着也烦。就找了下解决方案,记录下 

A value is trying to be set on a copy of a slice from a DataFrame .loc 解决方案_第1张图片

 

当前操作的dataframe是用其他df赋值得到的,不是最初始的df。因此,解决方案就是原始的df上进行操作,或者使用copy()函数,再者就是使用loc

new.loc[:,'possible_solution']='UNKNOW'

new=data.loc[pd.isnull(data['id'])        
new['possible_solution']='UNKNOW'

这样就会报错,因为直接操作了被原始df赋值的df进行操作。所以解决方案就有三个。
 

data.loc[pd.isnull(data['id'])['possible_solution']='UNKNOW'
new=data.loc[pd.isnull(data['id']).copy()        
new['possible_solution']='UNKNOW'
new=data.loc[pd.isnull(data['id'])        
new.loc['possible_solution']='UNKNOW'

 

你可能感兴趣的:(Python,python,开发语言)