比较Pandas

时间:2016-11-27 22:46:41

标签: python python-2.7 pandas dataframe

我是 pandas 的新手,我试图在没有运气的情况下比较行之间的值。
我想在RSIDOJI下一个的行之间找到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

3 个答案:

答案 0 :(得分:3)

尝试将diffloc

一起使用
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]