我有一个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行)。
我的最终目标是应用条件,获取上面的行,并测试该行的其他条件。
我可以使用哪些熊猫功能?
谢谢!
答案 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