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。