[英]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.