2017-07-07 93 views
0

我想股票收益的平均值與基準,並且到目前爲止我的代碼看起來是這樣的:採摘大熊貓平均列(同時排除一個)

index = ['^GSPC'] 
tickers = ['CAT','AAPL'] 
stocks = tickers + index 
start = dt.datetime(2017,1,1) 
end = dt.datetime(2017,6,30) 

def excess_movement_plot(stocks): 
    f = web.get_data_yahoo(tickers,start,end) 
    cleanData = f.loc['Adj Close'] 
    dataFrame = pd.DataFrame(cleanData) 
    stock_return = dataFrame.pct_change() 
    return plt.plot(stock_return[stocks]) 

就像現在的圖形顯示三行,但我希望它顯示2 - 平均代價(AAPL和CAT)和S & P(^ GSPC)

我已經嘗試了這兩個,但收效甚微。

stock_return[['AAPL', 'CAT']].mean(axis=0) 
stock_return.merge('AAPL', 'CAT') 

回答

0

您可以使用df.apply(np.mean, axis=1)

In [127]: import pandas as pd 
    ...: df = pd.DataFrame(np.random.randn(50, 3), columns=list('ABC')) 
    ...: df.head() 
    ...: 
Out[127]: 
      A   B   C 
0 -0.030422 -0.608397 -2.281822 
1 -0.448152 -1.609030 0.382790 
2 0.297778 0.207474 -0.212203 
3 -0.132665 -0.091073 0.108438 
4 -1.290343 0.782635 0.401523 

In [128]: df['Average'] = df[['B', 'C']].apply(np.mean, axis=1) 

In [131]: df[['A', 'Average']].head() 
Out[131]: 
      A Average 
0 -0.030422 -1.445109 
1 -0.448152 -0.613120 
2 0.297778 -0.002365 
3 -0.132665 0.008682 
4 -1.290343 0.592079 

如果你不希望你來計算平均原始列,你可以刪除它們,就像這樣:

df.drop(['B', 'C'], 1, inplace=True) 

你也可以用df[['B', 'C']].mean(axis=1)做同樣的事情:

In [132]: df['Average'] = df[['B', 'C']].mean(axis=1) 

In [133]: df[['A', 'Average']].head() 
Out[133]: 
      A Average 
0 -0.030422 -1.445109 
1 -0.448152 -0.613120 
2 0.297778 -0.002365 
3 -0.132665 0.008682 
4 -1.290343 0.592079 
+0

非常感謝,像魅力一樣工作。 –

+0

現在我已經返回plt.plot(stock_return ['Average']),但是如何繪製指數的第二個圖形 - 是否可以返回兩個圖? –

+0

@ thomas.mac'plt.plot(stock_return)'應該把它們都畫出來,我想。我對大熊貓不太熟悉。剛開始學習昨天。 :) –