过滤后在熊猫中选择上一行的语法

时间:2018-06-26 02:26:19

标签: python pandas dataframe conditional

我有一个5行的pd.DataFrame,说:

Row    Value
 1      32
 2      25
 3      10
 4      18
 5      21

让我们说我使用过滤器pd [pd ​​['Value'] <15],它应该返回

Row    Value
 3      10

我的问题是,我想在此过滤器返回True之前访问该行的值,在此示例中,我想函数返回值25(来自第2行)。

我的最终目标是应用条件,获取上面的行,并测试该行的其他条件。

我可以使用哪些熊猫功能?

谢谢!

4 个答案:

答案 0 :(得分:4)

将蒙版向上移动1。

df[(df['Value'] < 15).shift(-1).fillna(False)]

   Row  Value
1    2     25

更一般而言,如果您要查找大于15的所有行,而其下一行小于15的行,则可以计算两个单独的遮罩并将它们与:

df[(df['Value'].shift(-1) < 15) & (df['Value'] > 15)]

   Row  Value
1    2     25

答案 1 :(得分:3)

np.flatnonzero

要找到掩码True的位置,然后减去一个

df.iloc[np.flatnonzero(df.Value < 15) - 1]

   Row  Value
1    2     25

答案 2 :(得分:2)

使用idxmax

>>> df.iloc[df.Value.le(15).idxmax() - 1]

Row       2
Value    25

答案 3 :(得分:2)

使用nonzero

df.iloc[(df['Value'] < 15).nonzero()[0]-1]
Out[34]: 
   Row  Value
1    2     25