簡體   English   中英

根據另一列中的兩行計算數據框列

[英]calculate dataframe column based on two rows in another column

我有一個數據框,其中包含一個包含價格的列。 創建列來計算兩行之間的收益率(保留第一個或最后一個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

我應該循環嗎,還是有更好的方法?

您可以使用shift來移動行,然后使用div來將Series與已移動的自身分開:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM