Python 基于另一列中的两行计算dataframe列

Python 基于另一列中的两行计算dataframe列,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个数据框,包含一列价格。 创建一列计算两行之间的回报率(保留第一行或最后一行为空)的最佳方法是什么 例如,数据框如下所示: 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.1

我有一个数据框,包含一列价格。 创建一列计算两行之间的回报率(保留第一行或最后一行为空)的最佳方法是什么

例如,数据框如下所示:

    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
尝试按如下方式添加列:

    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
其中,返回柱的计算如下所示:

    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
返回行0=价格行1/价格行0-1

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

您可以使用移位行,然后根据移位后的行对序列进行分割:

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

你可以发布原始数据、代码、你的尝试和期望的结果。相应地更新。Thx@EdChum。