我是 pandas 的新手,我试图在没有运气的情况下比较行之间的值。
我想在RSI
为DOJI
和下一个的行之间找到100
差异。
在这种情况下,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
答案 0 :(得分:3)
尝试将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
时的布尔系列掩盖它,那么我就得到了答案。
答案 1 :(得分:1)
我找到行并在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')
答案 2 :(得分:0)
您也可以使用与shift
diff
(df['RSI'] - df['RSI'].shift(-1))[df['DOJI'] == 100]