2015-06-20 48 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变量。

我在这里错过了什么吗?

相关问题