我是初学者蟒蛇,我遇到以下问题:
我需要同时计算两个相互依赖的值。到目前为止我所拥有的是:
asset_a = CLOSE_SPX
asset_b = Close_iBoxx
x = df.x # just a list containing randomly 1 and 0
df['a']=100 # 100 is just the starting value for a and b and shall be then overwritten by the while loop
df['b']=100
i=1
while i<len(df.index):
df.a[i] = x*((df.a.shift(1)*0.5)*(df.b.shift(1)*0.5))+abs(1-x)*(df.a.shift(1)*asset_a)
df.b[i] = x*((df.b.shift(1)*0.5)*(df.a.shift(1)*0.5))+abs(1-x)*(df.b.shift(1)*asset_b)
i+1
目前我收到错误:ValueError: setting an array element with a sequence.
我也知道为什么我会遇到这个问题,请参阅:Numpy ValueError: setting an array element with a sequence. This message may appear without the existing of a sequence?
问题是如何解决这个问题?
问题是a和b取决于a和b的先前值。所以我们需要同时计算它们,同时参考循环的最后计算值。这是一种鸡蛋和鸡蛋问题......而且可能有一种更有效的解决方案而不是一种功能......
这是使用的dataframe = df的简短示例:
CLOSE_SPX Close_iBoxx A_Returns B_Returns A_Vola B_Vola
2014-05-15 1870.85 234.3017 -0.009362 0.003412 0.170535 0.075468
2014-05-16 1877.86 234.0216 0.003747 -0.001195 0.170153 0.075378
2014-05-19 1885.08 233.7717 0.003845 -0.001068 0.170059 0.075384
2014-05-20 1872.83 234.2596 -0.006498 0.002087 0.170135 0.075410
2014-05-21 1888.03 233.9101 0.008116 -0.001492 0.169560 0.075326
2014-05-22 1892.49 233.5429 0.002362 -0.001570 0.169370 0.075341
2014-05-23 1900.53 233.8605 0.004248 0.001360 0.168716 0.075333
2014-05-27 1911.91 234.0368 0.005988 0.000754 0.168797 0.075294
2014-05-28 1909.78 235.4454 -0.001114 0.006019 0.168805 0.075474
2014-05-29 1920.03 235.1813 0.005367 -0.001122 0.168866 0.075451
2014-05-30 1923.57 235.2161 0.001844 0.000148 0.168844 0.075430
2014-06-02 1924.97 233.8868 0.000728 -0.005651 0.168528 0.075641
2014-06-03 1924.24 232.9049 -0.000379 -0.004198 0.167852 0.075267