SettingWithCopyWarning 解决方案
来源:互联网 发布:淘宝网雪纺上衣 编辑:程序博客网 时间:2024/06/16 15:25
SettingWithCopyWarning 解决方案
问题场景:我在读取csv文件之后,因为要新增一个特征列并根据已有特征修改新增列的值,结果在修改的时候就碰到了SettingWithCopyWarning这个警告,花了很长时间才解决这个问题。
一个简易版的范例
- 1
- 2
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
按条件修改新列再输出就报错了:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
这个问题怎么解决呢?
方法一:
c = bb['one']==0bb.loc[c,'one']=1print(bb)
one two0 1 01 1 12 1 03 1 1c的类型是series,为什么这种情况下,bb.loc就不再是副本了?这个问题我也没想清楚?如有网友清楚请告诉我 。
方法二:
for i in range(bb.shape[0]): if bb['one'][i] == 0: bb.loc['one',i] = 1print(bb)或者
for i in range(bb.shape[0]):# if bb.loc['one',i] == 0: #KeyError: 'the label [one] is not in the [index]'# if bb.loc[i,'one'] == 0: #可行 if bb.loc[i]['one'] == 0: # 可行 #bb.loc['one',i] = 1 #可行 bb.loc[i,'one'] = 1
试验了一下标着“可行“的都行,唯一一个疑惑是倒数第二行
bb.loc['one',i]=1可行,为什么第二行的bb.loc['one',i] == 0不可行?
最佳方法还是方法一,尤其适合在行数比较多,条件比较复杂的情况下。
阅读全文
0 0
- SettingWithCopyWarning 解决方案
- pandas SettingWithCopyWarning
- 问题解决:SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame
- 解决方案
- 解决方案
- 解决方案
- 解决方案
- 解决方案
- 电力巡检解决方案解决方案
- 构造解决方案
- 管理解决方案
- brew解决方案
- IPTV解决方案
- MAXIMO解决方案
- 繁体解决方案
- 解决方案大全
- 网络解决方案
- 网络解决方案
- stm8s: GPIO配置,点亮LED!PB4,PB5引脚LED点不亮
- 【sublime】 json 格式化
- OpenCV,OpenGL,DirectX
- Python数据分析matplotlib设置多个子图的间距
- java初学者,应该怎么去学习?
- SettingWithCopyWarning 解决方案
- 《Java编程技巧1001条》第376条 , 了解数组,
- coredump分析
- 【Python-ML】感知器学习算法(perceptron)
- 每天一个linux命令(28):tar命令
- android线程做服务端接受数据传给UI线程
- 不允许输入空格
- vue2.0在使用websocket时切换页面后websocket依旧保持连接
- 多个DataTable按某一列合并