df = pd.read_csv("loc.csv",index_col=['Date'],na_values=['NA'],
parse_dates=True)
dates = pd.date_range('2010-01-01','2010-12-31')
symbols = ['AAPL','GOOG']
df1= df.ix[dates,symbols]
df1=df1.dropna(how='all')
line = [.5,0]
def min1 (df1,l ):
err= np.sum( (df1['GOOG']-(df1['AAPL']*l[0]+l[1]))**2 )
return err
result = spo.minimize(min1,line,args =(df1),method =' SLSQP',options = {' disp':True})
我收到如下错误:
only integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boolean arrays are valid indices
任何帮助将不胜感激。谢谢!
答案 0 :(得分:0)
错误意味着某个变量是一个浮点数组或数组(或列表)正用于索引角色;即它不应该在某个地方。
虽然我必须更仔细地研究你的代码,但引起我注意的第一件事是(df)
。这应该是元组,需要逗号:
args= (df1,)
如果这个简单的修复工作不起作用,请提供更多错误堆栈,以便我们更好地了解问题发生的位置。
这会运行吗?
min1(line, df1)
该函数的第一个参数是'自由变量',minimize
变化的变量,开始x0
值(line
)。 {* 1}}参数在不变的情况下提供附加参数。
鉴于初始值args
,line = [.5,0]
实际上已被调用(第一次使用
min1
但是在min1(np.array([.5,0]), df1)
里面你用字符串索引第一个参数,好像它是一个Pandas对象,而不是一个简单的2元素数组
min1
这可能是产生错误的原因。
因此,问题的根源是df1['GOOG'] # here df1 is the initial array, not the dataframe
的参数顺序混淆,并混合了数组和数据帧。