[英]Compare values between different rows in Pandas
我是熊貓的新手,我試圖比較行之間沒有運氣的值。
我想找到DOJI
為100
的行與下一行之間的RSI
差異 。
在這種情況下, 52.157595
- 45.430342
。
我該怎么辦?
我在query()
玩了一點,但我不知道自己在做什么...
Close RSI MOM MACD HAM HMAN DOJI
20161125 10:13:00 69.87 52.157595 -0.21 0.011241 0 0 100
20161125 10:14:00 69.77 45.430342 -0.24 0.003785 0 0 0
20161125 10:15:00 69.77 45.430342 -0.10 -0.002099 0 0 0
20161125 10:16:00 69.83 49.924669 -0.02 -0.001899 0 0 0
嘗試使用diff
與loc
df.RSI.diff(-1).loc[df.DOJI.eq(100)]
20161125 10:13:00 6.727253
Name: RSI, dtype: float64
說明
希望diff
是不言自明的。 但是, -1
將索引與當前行而不是下一行對齊。 這就是說,如果我用DOJI
為100
時的布爾系列掩蓋它,那么我就會得到答案。
我將找到行並在numpy
進行操作
this_row = np.append((df.DOJI.values == 100)[:-1], False)
next_row = np.roll(this_row, 1)
rsi = df.RSI.values
pd.Series(rsi[this_row] - rsi[next_row],
df.index.values[this_row], name='RSI')
您也可以以與diff
類似的方式使用shift
(df['RSI'] - df['RSI'].shift(-1))[df['DOJI'] == 100]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.