簡體   English   中英

Python Dataframe 獲取上一行

[英]Python Dataframe get previous row

              Open    High     Low   Close     Volume  Dividends  Stock Splits
Date                                                                                      
2020-07-31  324.60  325.33  320.05  325.22   85210800        0.0             0 
2020-08-03  327.01  328.31  326.42  327.48   53077900        0.0             0 
2020-08-04  326.55  328.74  326.55  328.74   41917900        0.0             0 

我如何在代碼中編寫以下內容:

如果當前行volume比以前的更一行volume再加入新的列標題position和減去close - open當前行的?

如果我正確閱讀了您的要求,您可以使用以下模式:

df.loc[{predicate}, {location}] = {expression}

所以:

df.loc[df.diff().Volume > 0, 'Position'] = df.Close - df.Open

變換:

     Open   Close      Volume
0  324.60  325.22  85210800.0
1  327.01  327.48  53077900.0
2  326.55  328.74  41917900.0

到:

     Open   Close      Volume  Position
0  324.60  325.22  85210800.0       NaN
1  327.01  327.48  53077900.0      0.47
2  326.55  328.74  41917900.0      2.19

不是最優雅的,但應該工作:

df['Position'] = np.nan
df.loc[df['Volume']>df.shift(periods=1)['Volume'],'Position'] = df.loc[df['Volume']>df.shift(periods=1)['Volume'],'Close']-df.loc[df['Volume']>df.shift(periods=1)['Volume'],'Open']

如果您對不滿足交易量條件(而不是 NaN)的頭寸使用 0.00,則可以使用更簡單的版本:

df['Position'] = (df.shift(periods=1)['Volume'] <df['Volume']) *(df['Close']-df['Open'])

暫無
暫無

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

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