2017-04-15 13 views
0
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 

結果= spo.minimize(MIN1、ライン、引数の有効な指標であります=(DF1)、メソッド= 'SLSQP'、オプション= { 'DISP':真})spo.optimize:整数のみ、スライス(:)、省略記号(...)、numpy.newaxis(なし)と整数またはブール配列が

Iは、以下のようにエラーを取得しています:任意の助けを理解されるであろう

only integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boolean arrays are valid indices 

。ありがとう!

答えて

0

エラーは、フロートまたは配列(またはリスト)である変数がインデックスロールで使用されていることを意味します。すなわち、どこかにあるべきではない。

私はあなたのコードをより慎重に勉強しなければならないが、私の目を引く最初のものは(df)です。これはタプルで、コンマ必要必要があります。その簡単な修正は、作業エラー・スタックの多くを与えるので、私たちは、問題が発生している場所の良いアイデアを持っていない場合は

args= (df1,) 

を。


これは実行されますか?

min1(line, df1) 

関数の最初の引数は「自由変数」、minimizeは、変化x0値(line)を開始したものです。 argsパラメータは、変更されていない場合、追加された引数を提供します。それはパンダのオブジェクトであるかのように初期値、line = [.5,0]min1は実際に、(

min1(np.array([.5,0]), df1) 

で初めてでも文字列でmin1あなたのインデックス内の最初の引数と呼ばれる考える


、エラーを生成何かもしれない、単純な2要素の配列

df1['GOOG'] # here df1 is the initial array, not the dataframe 

したがって、問題の根本は、引数の順番が混乱してmin1になり、配列とデータフレームが混ざります。

+0

返信いただきありがとうございます.min1(line、df1)..これは機能しました... 'l'は2要素シリーズで、df1はパンダです.....あなたのことはわかりません「配列とデータフレームを混ぜる」とコメントしています。 plsは説明する –

関連する問題