我有一个熊猫系列。
我需要检查系列中是否达到了下限或上限。
如果达到下限和上限,我需要知道首先达到。
我可以使用.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
我遇到的问题是先解决问题
if upper_bound_reached(series, ub) and lower_bound_reached(series, lb):
# work out which bound is reached first
实现这一目标的最惯用方法是什么?
未达到约束 - 返回NONE:
只达到上限 - 返回UPPER:
达到两个边界,首先是下限 - 返回LOWER:
答案 0 :(得分:2)
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'