我在使用SettingWithCopyWarning时遇到了一个烦人的问题,而且我似乎没有消除这个警告。我有一个df用户喜欢这个
user id cloud_files
1 0
2 8
3 1
我想添加一个云用户的布尔列
user id cloud_files cloud_user
1 0 false
2 8 true
3 1 true
我试过这样做,但我一直得到SettingWithCopyWarning。
users['cloud_user'] = np.where(users['cloud_files']== 0, True, False)
users['cloud_user'] = users['cloud_files']!= 0
users.loc[:,'cloud_user'] = users['cloud_files']!= 0
我尝试过复制和重置索引,但我就是无法摆脱警告。有没有办法在不收到警告的情况下做到这一点,或者我只需要取消警告?
您可以使用布尔值的属性来直接创建新列,因为只要num为非零,bool(num)
就会计算为True
df['cloud_user'] = df['cloud_files'].astype(bool)
结果:
>>> df = pd.DataFrame({'user_id':[1,2,3],'cloud_files':[0,8,1]})
>>> df['cloud_user'] = df['cloud_files'].astype(bool)
>>> df
user_id cloud_files cloud_user
0 1 0 False
1 2 8 True
2 3 1 True