【发布时间】:2019-05-22 01:20:33
【问题描述】:
在 np.where 条件中使用 min、max 函数时出现以下错误。
ValueError:Series 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。
我想将“for”循环转换为更快的计算,因此我尝试使用“np.where”函数切换我的计算。
原始工作循环代码
for p in range (1,len(curve_details)):
curve_details.loc[p,'coupon_after']=max(floor,min(ceiling,
curve_details.loc[p-1,'coupon_after']
+ max(move_cap_down, min(move_cap_up,
curve_details.loc[p,'coupon_before']
-curve_details.loc[p-1,'coupon_after']))))
我正在尝试的新代码
curve_details['coupon_after']=np.where(curve_details.index>0,
max(floor,min(ceiling,
curve_details.loc[curve_details.index-
1,'coupon_after'] + max(move_cap_down,
min(move_cap_up,
curve_details.loc[curve_details.index,'coupon_before']
-curve_details.loc[curve_details.index-
1,'coupon_after'])))),int_rate)
我想加快我的 for 循环,因此已切换到 'np.where' 函数。我现在可以在我的代码中进行哪些更改以消除值错误?
【问题讨论】: