我试图将cost
列添加到w1_weekdays
。当onP_price
等于end_time_hour
时,我想将'kwh_usage'乘以0, 1, 2
。对于其他所有时间,我想乘以offP_price
。
我使用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']))
但是,出现此错误
代码是否正确?以及为什么无效的语法错误?谢谢!
答案 0 :(得分:0)
我认为更好的方法是使用numpy.where
的isin
创建的布尔掩码和最后多列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']