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'