与带熊猫条件lambda一起使用时语法无效

时间:2018-07-16 05:55:52

标签: python pandas

我试图将cost列添加到w1_weekdays。当onP_price等于end_time_hour时,我想将'kwh_usage'乘以0, 1, 2。对于其他所有时间,我想乘以offP_price

enter image description here

我使用apply和lambda来做到这一点。

w1_weekdays['cost'] = w1_weekdays['end_time_hour'].apply(lambda (onP_price, offP_price):\
                                                     (onP_price * w1_weekdays['kwh_usage'])\
                                                     if w1_weekdays['end_time_hour'] in (0,1,2)\
                                                     else (offP_price * w1_weekdays['kwh_usage']))

但是,出现此错误

enter image description here

代码是否正确?以及为什么无效的语法错误?谢谢!

1 个答案:

答案 0 :(得分:0)

我认为更好的方法是使用numpy.whereisin创建的布尔掩码和最后多列kwh_usage的矢量化解决方案:

mask = w1_weekdays['end_time_hour'].isin([0,1,2])

w1_weekdays['cost'] = np.where(mask, onP_price , offP_price) *  w1_weekdays['kwh_usage']