2015-06-20 73 views
1

我是一名Python /熊貓新手。我有一個數據集看起來像下面這樣:使用週三至週三的熊貓大會計算每日回報每週回報

   PERMNO  date  gret gvwretd 
date            
2012-01-03 10001 2012-01-03 1.001751 1.016152 
2012-01-04 10001 2012-01-04 0.989510 0.999553 
2012-01-05 10001 2012-01-05 1.003525 1.002928 
2012-01-06 10001 2012-01-06 0.997368 0.997093 
2012-01-09 10001 2012-01-09 0.999117 1.002815 
2012-01-10 10001 2012-01-10 1.003534 1.010420 
2012-01-11 10002 2012-01-11 0.981074 1.000951 
2012-01-12 10002 2012-01-12 0.993243 1.003046 
2012-01-13 10002 2012-01-13 1.003175 0.994688 
2012-01-17 10002 2012-01-17 1.013562 1.003904 
2012-01-18 10002 2012-01-18 1.001784 1.012296 
2012-01-19 10002 2012-01-19 0.995013 1.005580 
2012-01-20 10002 2012-01-20 0.984428 1.000881 
2012-01-23 10002 2012-01-23 1.017273 1.001606 
2012-01-24 10002 2012-01-24 0.987489 0.999196 

我能得到一個星期的星期三所有使用df.resample(「W-WED」),但我不能正確合併回原始數據設置,以便我可以計算PERMNO和DATE週三開始的一週內的累計回報乘積。

如何解決這個問題?

  1. 我應該使用「日期」索引還是「日期」列來創建週三開始的指標?
  2. 週三下降的日期序列比原始數據集短。我怎樣才能合併回來並正確填寫日期?

謝謝

回答

0

我似乎找到經過一番認真的努力的解決方案:

f = lambda x: x.prod() - 1 # cumulative product of all returns ("gret": 1+ret) in each week for each firm 
weekly_rets = df.groupby('PERMNO').resample('W-WED', closed='left', how=f) 

我錯在一開始認爲我應該創建一個新的數據集包含的所有日期是在週三跌落,然後將其與原始的更大數據集合並,並填入缺失的值和適當的星期三日期以創建一個groupby變量。

我在這裏錯過了什麼嗎?