2016-11-25 146 views
1

我有一个数据框,包含一个包含价格的列。 最好的方法是创建一个计算两行之间的回报率的列(留下第一个或最后一个Null)。基于另一列中的两行计算数据帧列

例如数据帧看起来如下:

Date  Price 
2008-11-21 23.400000 
2008-11-24 26.990000 
2008-11-25 28.000000 
2008-11-26 25.830000 

尝试添加列如下:

Date  Price  Return 
2008-11-21 23.400000  0.1534 
2008-11-24 26.990000  0.0374 
2008-11-25 28.000000 -0.0775 
2008-11-26 25.830000  NaN 

凡返回柱的计算如下:

Return Row 0 = Price Row 1/Price Row 0 - 1

我应该为循环,还是有更好的方法?

+2

你能后的原始数据,代码,你的尝试和期望的结果。 – EdChum

+0

相应更新。 Thx @EdChum。 – Kelaref

回答

2

您可以使用shift的行移位,然后div来划分系列针对其自身转变:

In [44]: 
df['Return'] = (df['Price'].shift(-1).div(df['Price']) - 1) 
df 

Out[44]: 
     Date Price Return 
0 2008-11-21 23.40 0.153419 
1 2008-11-24 26.99 0.037421 
2 2008-11-25 28.00 -0.077500 
3 2008-11-26 25.83  NaN 
相关问题