计算特定行的收益

时间:2019-03-16 12:47:29

标签: python pandas

我有一个这样的数据框。

   Date       price       top          
 ..............
1999-07-21  8.6912      9.674425    
1999-07-22  8.6978      8.692583    
1999-07-23  8.8127      10.760976   
1999-07-24  8.8779      8.871057    
 ..............
1999-07-27  8.8888      10.12344
...............

我想创建一个名为“ return”的新列。如果连续输入'price'>'top',那么我想用该行的价格返回和n + 5行的价格填充该行的'return'。

例如,在1999-07-22行中,价格大于最高价,因此我想在此行中用收益率07-22和07-27填充“收益率”,即(8.8888-8.6978)/ 8.6978(请注意,日期可能不连续,因为不包括节假日)。仅一小部分行满足需求。因此,“返回”中的大多数值都将丢失值。

能否请您告诉我如何在python中做到这一点?

1 个答案:

答案 0 :(得分:1)

如有必要,首先创建DatetimeIndex,然后使用Series.pct_changeSeries.shift,最后使用Series.where

df['Date'] = pd.to_datetime(df['Date'])
df = df.set_index('Date')

df['new'] = (df['price'].pct_change(5)
                        .shift(-5)
                        .where(df['price'] > df['top']))
print (df)