|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
手头一组数据,需要进行相应的分组。。但是要求超出设定的极大极小值,则不参与分组,返回空值即可。
我原始的代码是- for i in std_level:
- #按配置文件的指标字段顺序一一对应,生成指定的指标数据表
- #原标准等级数据,为单独的表格,为提升速度,特地将相对应的指标提取出来,保存为字典,方便快速读取
- max_std,min_std,l_1,l_2,l_3,l_4,l_5 = std_level[i][0] #此处的[0]是因为字典的键值为二维列表,需去除一层中括号
- def trans(x):
- if min_std < x < l_5:
- return 6
- elif l_5 <= x < l_4:
- return 5
- elif l_4 <= x < l_3:
- return 4
- elif l_3 <= x < l_2:
- return 3
- elif l_2 <= x < l_1:
- return 2
- elif l_1 <= x <= max_std:
- return 1
- else:
- return np.NaN
- data['%_level'%i] = data[i].apply(trans)
复制代码
个人感觉用pandas的cut方法,可能可以更快速地解决问题。。
我参照别人的方法,自己写了代码,但是由于部分数据位于极大极小值外,无法参与分组。。系统报错,不知道如何改进,求指点。
- for i in std_level:
- max_std,min_std,l_1,l_2,l_3,l_4,l_5 = std_level[i][0]
- bins = [min_std,l_5,l_4,l_3,l_2,l_1,max_std]
- data['%s_level'%i] = pd.cut(data[i],bins,labels=[6,5,4,3,2,1])
复制代码
|
|