Python spo.optimize:只有整数、切片(:)、省略号(…)、numpy.newaxis(无)以及整数或布尔数组是有效的索引

Python spo.optimize:只有整数、切片(:)、省略号(…)、numpy.newaxis(无)以及整数或布尔数组是有效的索引,python,numpy,scipy,Python,Numpy,Scipy,result=spo.minimize(min1,line,args=(df1),method='SLSQP',options={'disp':True}) 我得到一个错误,如下所示: 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') sym

result=spo.minimize(min1,line,args=(df1),method='SLSQP',options={'disp':True})

我得到一个错误,如下所示:

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

任何帮助都将不胜感激。谢谢

该错误意味着某个浮点或数组(或列表)变量正在索引角色中使用;i、 它不应该在某个地方

虽然我必须更仔细地研究您的代码,但首先吸引我注意的是
(df)
。这应该是元组,并且需要逗号:

only integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boolean arrays are valid indices
如果这个简单的修复方案不起作用,请提供更多的错误堆栈,以便我们更好地了解问题发生的位置


这个能跑吗

args= (df1,)
函数的第一个参数是“自由变量”,即
minimize
可变的变量,从
x0
值(
line
)开始。
args
参数在不改变的情况下提供添加的参数


给定初始值,
line=[.5,0]
,实际调用了
min1
(第一次使用

min1(line, df1)
但是在
min1
中,您使用字符串索引第一个参数,就好像它是一个Pandas对象,而不是一个简单的2元素数组

min1(np.array([.5,0]), df1)
这可能就是产生错误的原因

因此,问题的根源是混淆了
min1
的参数顺序,并混淆了数组和数据帧。

感谢您的回复..min1(line,df1)…这起作用了..在函数“l”中是一个2元素系列,df1是一个熊猫..我不清楚您的评论“混淆数组和数据帧”。请解释
df1['GOOG']  # here df1 is the initial array, not the dataframe