Python 计算不存储在DataFrame中,但可打印

Python 计算不存储在DataFrame中,但可打印,python,pandas,numpy,Python,Pandas,Numpy,我有以下计算: np.最大值(0,np.产品([perf_-asset,calc_-arr['val']])-支付金额-np.产品([exposure,calc_-arr['delta_-1']]) 如果写出来,这将是: MAX(0, 0.8 × 105.015038 - 80 - TRUE × 5.3135) MAX(0, 84.0120307692 - 80 - 5.3135) = 0 如果我打印此文件,输出实际上可以工作,但如果我想将其存储在数据帧中,则不会: calc_arr['add

我有以下计算:
np.最大值(0,np.产品([perf_-asset,calc_-arr['val']])-支付金额-np.产品([exposure,calc_-arr['delta_-1']])

如果写出来,这将是:

MAX(0, 0.8 × 105.015038 - 80 - TRUE × 5.3135)
MAX(0, 84.0120307692 - 80 - 5.3135)
= 0
如果我打印此文件,输出实际上可以工作,但如果我想将其存储在数据帧中,则不会:
calc_arr['added_amt']=np.max(0,np.prod([perf_-asset,calc_arr['val'])-金额支出-np.prod([exposure,calc_arr['delta_1'])

计算突然停止了。在此之前,我甚至不必使用
np.prod
np.sum
。老实说,我完全糊涂了

完整循环:

j = 1
for i in [0.0627,0.0627,0.0627,0.0627,0.0627,0.0627,0.0627,0.0627,0.0627,0.0627,0.0627,0.0627,0.0627,0.0627,0.0627,-0.053,-0.0698,-0.1011,-0.1767,-0.6271,-0.6271,-0.6271,-0.6271,-0.6271,-0.6271,-0.6271,-0.6271,-0.6271,-0.6271,-0.6271]:
    risky_return = i
    risk_free_return = (-0.0125/260)

    stock_val = stock_calc(j, stock_val['amt_payout'], stock_val['alloc_risky'], stock_val['alloc_risk_free'], stock_val['delta_1'], risky_return, risk_free_return)
    stock_vals = stock_vals.append(stock_val)
    j = j + 1
然后检索
calc_arr['val']

calc_arr['val'] = np.sum([np.prod([(1 + perf_risky), alloc_risky]), np.prod([(1 + perf_risk_free), alloc_risk_free])])

我认为您需要
值附加到
列表
-
股票价值
中,然后将其分配到列:

stock_vals = []
for i in [0.0627,0.0627,0.0627,0.0627,0.0627,0.0627,0.0627,0.0627,0.0627,0.0627,0.0627,0.0627,0.0627,0.0627,0.0627,-0.053,-0.0698,-0.1011,-0.1767,-0.6271,-0.6271,-0.6271,-0.6271,-0.6271,-0.6271,-0.6271,-0.6271,-0.6271,-0.6271,-0.6271]:
    risky_return = i
    risk_free_return = (-0.0125/260)

    stock_val = stock_calc(j, stock_val['amt_payout'], stock_val['alloc_risky'], stock_val['alloc_risk_free'], stock_val['delta_1'], risky_return, risk_free_return)
    stock_vals.append(stock_val)


calc_arr['val'] = stock_vals
我尝试将其重写以列出理解:

L = [0.0627,0.0627,0.0627,0.0627,0.0627,0.0627,0.0627,0.0627,0.0627,0.0627,0.0627,0.0627,0.0627,0.0627,0.0627,-0.053,-0.0698,-0.1011,-0.1767,-0.6271,-0.6271,-0.6271,-0.6271,-0.6271,-0.6271,-0.6271,-0.6271,-0.6271,-0.6271,-0.6271]

calc_arr['val'] = [stock_vals.append(stock_calc(j, stock_val['amt_payout'], stock_val['alloc_risky'], stock_val['alloc_risk_free'], stock_val['delta_1'], risky_return, (-0.0125/260))) for risky_return in L]

我认为您需要
值附加到
列表
-
股票价值
中,然后将其分配到列:

stock_vals = []
for i in [0.0627,0.0627,0.0627,0.0627,0.0627,0.0627,0.0627,0.0627,0.0627,0.0627,0.0627,0.0627,0.0627,0.0627,0.0627,-0.053,-0.0698,-0.1011,-0.1767,-0.6271,-0.6271,-0.6271,-0.6271,-0.6271,-0.6271,-0.6271,-0.6271,-0.6271,-0.6271,-0.6271]:
    risky_return = i
    risk_free_return = (-0.0125/260)

    stock_val = stock_calc(j, stock_val['amt_payout'], stock_val['alloc_risky'], stock_val['alloc_risk_free'], stock_val['delta_1'], risky_return, risk_free_return)
    stock_vals.append(stock_val)


calc_arr['val'] = stock_vals
我尝试将其重写以列出理解:

L = [0.0627,0.0627,0.0627,0.0627,0.0627,0.0627,0.0627,0.0627,0.0627,0.0627,0.0627,0.0627,0.0627,0.0627,0.0627,-0.053,-0.0698,-0.1011,-0.1767,-0.6271,-0.6271,-0.6271,-0.6271,-0.6271,-0.6271,-0.6271,-0.6271,-0.6271,-0.6271,-0.6271]

calc_arr['val'] = [stock_vals.append(stock_calc(j, stock_val['amt_payout'], stock_val['alloc_risky'], stock_val['alloc_risk_free'], stock_val['delta_1'], risky_return, (-0.0125/260))) for risky_return in L]

这很有趣。如果使用
a=np.maximum(0,np.prod([perf_-asset,calc_-arr['val'])金额支付-np.prod([exposure,calc_-arr['delta_-1']])
cppi['added_-amt']=a
它也不起作用?或者可能需要
cppi.ix[0',added_-amt']=a
,因为
cppi['added_-amt']],在数组中也返回
NaN
,但打印正确。因此
a
的值是
NaN
?不,a的值应该是0。这很有趣。如果使用
a=np.maximum(0,np.prod([perf_-asset,calc_-arr['val'])金额支付-np.prod([exposure,calc_-arr['delta_-1']])
cppi['added_-amt']=a
它也不起作用?或者可能需要
cppi.ix[0',added_-amt']=a
,因为
cppi['added_-amt']],在数组中也返回
NaN
,但打印正确。因此
a
的值是
NaN
?否,a的值是0,应该是这样的。