根据另一列中的两行计算dataframe列

时间:2016-11-25 11:00:11

标签: python pandas dataframe

我有一个数据框,包含一列价格。 什么是创建列的最佳方法,计算两行之间的回报率(留下第一个或最后一个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

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

1 个答案:

答案 0 :(得分: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