我根据其他几列来计算列。但是,当所有数字的累积总和达到特定阈值时(在我的情况下,当我达到预算的顶部时),我想停止进行计算,并且在列之后的所有内容中仅返回0。我尝试了嵌套功能,而且它没有工作,只是说它只是说' str'和' int'无法添加。以下是它现在的样子:
def total(PC):
for C in PC:
if np.cumsum(C) <= budget_var1:
return pol_cost
else:
C == 0
def pol_cost(x):
if 9500000 <= x.CRV or x.CRV < 50 or x.MDI <= MDI_var:
return 0
if (x.CI < 40 ):
return x.CRV
elif (60 <= x.CI <80):
return x.CRV*((100-x.CI)/(100-var_var))**x.Cost_Escalation_N
df1['Policy_Cost_Y1'] = df1.apply(total, axis = 1)
我尝试了几种组合,但都没有成功。内部函数pol_cost独立时工作得很好。由于我尝试尽可能高效,因此我不想在计算出值后将值更改为0。一旦达到我的阈值(budget_var1),我想要一个硬停止,然后用0填充列的其余部分。
编辑:这就是df1与&#39; Policy_Cost_Y1&#39; (格式为I&#39; m创建)添加了格式参考:
budget_var1 = 9
CRV MDI CI 'Policy_Cost_Y1'
1.5 80 30 2
3.0 90 95 3
4.25 75 67 4
10.0 90 87 0
6.5 40 55 0
2.0 56 65 0