我试图提出以下公式:
我有以下代码,但它不接受 6 个单独变量的边界,它只接受一个元组,这使得所有变量的边界都相同。
## cut benchmark out of data
benchmark_ser = data_df.ix[:,0]
## get out the stocks data
stocks_df = data_df.ix[:,1:]
## create/get bounds
bds = (0,.2) # <- i want to change this line
# to something that will provide
# a bound for each variable like
# [(0,.1),(0,.2),(0,.5),(0,.6)]
wgt_arr = sp.optimize.lsq_linear(stocks_df, benchmark_ser, bds)
Run Code Online (Sandbox Code Playgroud)
我目前收到以下错误:
ValueError: 'bounds' must contain 2 elements.
Run Code Online (Sandbox Code Playgroud)
谢谢
我有一个稀疏的数据框,包括购买或出售库存的日期,如下所示:
Date Inventory
2017-01-01 10
2017-01-05 -5
2017-01-07 15
2017-01-09 -20
Run Code Online (Sandbox Code Playgroud)
我想解决的第一步是添加其他日期。我知道您可以使用重新采样,但只需突出显示这部分,以防它对下一个更困难的部分产生影响。如下:
Date Inventory
2017-01-01 10
2017-01-02 NaN
2017-01-03 NaN
2017-01-04 NaN
2017-01-05 -5
2017-01-06 NaN
2017-01-07 15
2017-01-08 NaN
2017-01-09 -20
Run Code Online (Sandbox Code Playgroud)
最后一步是让它向前填充 NaN,除非它遇到一个新值,该值会添加到上面行的当前值中,以便最终的数据帧如下所示:
Date Inventory
2017-01-01 10
2017-01-02 10
2017-01-03 10
2017-01-04 10
2017-01-05 5
2017-01-06 5
2017-01-07 20
2017-01-08 20
2017-01-09 0
2017-01-10 0
Run Code Online (Sandbox Code Playgroud)
我正在尝试采用 pythonic 方法来解决此问题,而不是基于循环的方法,因为那样会非常慢。
该示例也适用于具有多列的表,如下所示:
Date InventoryA InventoryB
2017-01-01 10 NaN
2017-01-02 NaN NaN
2017-01-03 NaN 5
2017-01-04 NaN 5
2017-01-05 -5 NaN
2017-01-06 NaN …Run Code Online (Sandbox Code Playgroud)