Python Numpy或pandas:测试数组/系列中是否达到上限或下限,以及首先达到哪个上限或下限

Python Numpy或pandas:测试数组/系列中是否达到上限或下限,以及首先达到哪个上限或下限,python,numpy,pandas,Python,Numpy,Pandas,我有一个熊猫系列 我需要检查序列中是否达到下限或上限 如果同时达到下限和上限,我需要知道首先达到的是哪个 我可以使用.max()和.min()函数来确定是否已达到某个界限: def upper_bound_reached(series, upper_bound): return series.max() >= upper_bound def lower_bound_reached(series, lower_bound): return series.min() <

我有一个熊猫系列

我需要检查序列中是否达到下限或上限

如果同时达到下限和上限,我需要知道首先达到的是哪个

我可以使用
.max()
.min()
函数来确定是否已达到某个界限:

def upper_bound_reached(series, upper_bound):
    return series.max() >= upper_bound

def lower_bound_reached(series, lower_bound):
    return series.min() <= lower_bound
实现这一点最惯用的方法是什么

一些图表显示了我正在寻找的内容: 未达到绑定-返回无:


仅达到上限-返回上限:


达到两个界限,先下界-返回下限:


s=pd.系列(np.sin(np.arange(0,7,1)))
上限=0.5
下限=-0.5
过滤=s[(s>=上限)|(s=上限,否则为“下限”
>>>第一个交叉口
“上”

太简单了!谢谢!
if upper_bound_reached(series, ub) and lower_bound_reached(series, lb):
    # work out which bound is reached first
s = pd.Series(np.sin(np.arange(0, 7, .1)))
upper_bound = 0.5
lower_bound = -0.5

filtered = s[(s >= upper_bound) | (s <= lower_bound)]

first_crossing = None
if not filtered.empty:
    first_crossing = 'UPPER' if filtered.index[0] >= upper_bound else 'LOWER'

>>> first_crossing
'UPPER'