我有一本这样的字典:
Dict={'A':0.0697,'B':0.1136,'C':0.2227,'D':0.2725,'E':0.4555}
我希望我的输出是这样的: 如果我的数据帧中的值小于0.0697,0.1136,0.2227,0.2725,0.4555,则返回A,B,C,D,E;否则返回F
我试过:
TrainTest['saga1'] = TrainTest['saga'].apply(lambda x,v: Dict[x] if x<=v else 'F')
但它返回一个错误:
TypeError: <lambda>() takes exactly 2 arguments (1 given)
让我们做一些测试数据:
接下来,认识到
Dict
是一个dict
并且没有顺序,所以让我们按照数字的相反顺序来排序:最后,解决问题的方法不是在
saga
上循环,而是在thresh
上循环,因为Python/Pandas中的循环(和apply()
)很慢,我们假设saga
比thresh
长得多:现在
result
是一系列值a,B,C,D,E,F,我们按相反的顺序循环,因为例如0比所有的值都小,应该标记为a,而不是E关于运行时间:
以下是熊猫的运行时间:
使用映射/应用:
使用矢量化:
相关问题 更多 >
编程相关推荐