|
|

楼主 |
发表于 2019-5-7 17:58:56
|
显示全部楼层
手头的数据情况是这样的:
1. 有一份独立的标准数值文件。
2. 需要以这个标准数值为准,将另一份文件中的数据,根据相应的指标,转成对应的等级。 --这个貌似用mysql比较简单些,用join的命令比较很好弄。。
3. 由于其他不少操作还需要在python中使用,所以只能考虑用python代码,来进行转换。。自己手写了一份,感觉挺繁琐的。。不知道是否可以改进下。。
4. 数据中有不少空值,不考虑参与换算,新生成的等级字段,就也保留为空值。。
代码如下,求大神指点。。(开始有考虑使用apply方法,但是由于不同指标的数值是不一样的,不能固定数值)
- for zb in list(data_std['指标']):
- for num in range(data.shape[0]):
- if data[zb][num] != None:
- if zb !='DISSOLVED_O2': #某个指标比较特殊,数值越大越好。其余指标是数值越小越好。因此要单独设置
- if (data[zb][num]) <= float(data_std[data_std['指标'] ==zb]['I']):
- data['%s_wq'%zb] = 1
- elif (data[zb][num]) <= float(data_std[data_std['指标'] ==zb]['II']):
- data['%s_wq'%zb] = 2
- elif (data[zb][num]) <= float(data_std[data_std['指标'] ==zb]['III']):
- data['%s_wq'%zb] = 3
- elif (data[zb][num]) <= float(data_std[data_std['指标'] ==zb]['IV']):
- data['%s_wq'%zb] = 4
- elif (data[zb][num]) <= float(data_std[data_std['指标'] ==zb]['V']):
- data['%s_wq'%zb] = 5
- else:
- data['%s_wq'%zb] = 6
- if zb =='DISSOLVED_O2':
- if (data[zb][num]) >= float(data_std[data_std['指标'] ==zb]['I']):
- data['%s_wq'%zb] = 1
- elif (data[zb][num]) >= float(data_std[data_std['指标'] ==zb]['II']):
- data['%s_wq'%zb] = 2
- elif (data[zb][num]) >= float(data_std[data_std['指标'] ==zb]['III']):
- data['%s_wq'%zb] = 3
- elif (data[zb][num]) >= float(data_std[data_std['指标'] ==zb]['IV']):
- data['%s_wq'%zb] = 4
- elif (data[zb][num]) >= float(data_std[data_std['指标'] ==zb]['V']):
- data['%s_wq'%zb] = 5
- else:
- data['%s_wq'%zb] = 6
- else:
- data['%s_wq'%zb] = None
- data.head()
复制代码
指标示意文件如下:
|
|