2012-10-21 53 views
1

我剛剛開始使用Python並使用熊貓來編寫一個股票投資組合應用程序。我遇到的問題是在我的職位類別中,該類職位創建了熊貓系列來根據交易來表示隨着時間的推移,每隻股票擁有的股份數量。因此,如果我在2012年10月10日在IBM購買50股股票並在10/14/2012賣出10股,我希望IBM的position.shares系列是:熊貓添加系列以保持運行總和

  • 10/10/2012:50
  • 2012年10月11日:50
  • 2012年10月12日:50
  • 2012年10月13日:50
  • 2012年10月14日:40
  • 2012年10月15日:40

我計劃通過添加從交易日期到當前日期的系列,然後將每個系列彙總爲一個系列。我正在嘗試使用Series.add函數,因爲我需要一個填充值來確保表示新事務的新共享序列不是NaN舊位置。問題是我不知道如何初始化可以正確添加的可用系列。我想系列(0)下面的代碼由剛剛返回:

Series([], dtype=float64) 

我也試圖與只是一些隨機的日期用0值初始化,但我只是不停地甚至加入​​不同系列之後獲得該系列回到它。

這裏是我的代碼:

class Position: 
    def __init__(self, trades): 
     self.ticker = trades[0].ticker #grab the ticker we are dealing with 
     self.shares = Series() 
     for trade in trades: 
      if trade.tranType == 0 or trade.tranType == 2: 
       direction = 1 #a buy increases share amount 
      else: 
       direction = -1 # a sell decreases share amount 
      dateRangeInFolio = pd.DateRange(trade.date, datetime.datetime.today())  #from the event date through today 
      shareSer = Series(trade.shares * direction, index=dateRangeInFolio) 
      self.shares.add(shareSer, fill_value=0) 
     print self.shares   

感謝您的幫助。如果我缺少一些非常基本的東西,我很抱歉。

+2

你有小樣本有這個問題,可以複製粘貼和嘗試。 – Himanshu

回答

1

so Series.add 返回總結的系列...我認爲它只是將它添加到已有的Series對象中。所以我這樣做:

self.shares = self.shares.add(shareSer, fill_value=0) 

,而不是

self.shares.add(shareSer, fill_value=0) 

和它的作品。