Python 熊猫:在时间序列中找到第一个条件

Python 熊猫:在时间序列中找到第一个条件,python,pandas,numpy,Python,Pandas,Numpy,我希望在timeseries数据集中首次出现小于-3的值。我在使用pandas和避免显式迭代/循环时遇到困难。假设我有下表: Date Return 2020-10-12 -1.501909 2020-10-13 -2.123128 2020-10-14 -3.771381 2020-10-15 -4.919922 2020-10-16 -3.006824 2020-10-19 -2.492342 2020-10-20 -1.040846 2020-

我希望在timeseries数据集中首次出现小于-3的值。我在使用pandas和避免显式迭代/循环时遇到困难。假设我有下表:

Date          Return
2020-10-12   -1.501909
2020-10-13   -2.123128
2020-10-14   -3.771381
2020-10-15   -4.919922
2020-10-16   -3.006824
2020-10-19   -2.492342
2020-10-20   -1.040846
2020-10-21   -2.251543
2020-10-22   -3.751839
2020-10-23   -3.420191
2020-10-26   -5.215563
2020-10-27   -2.502344
2020-10-28   -2.836966
2020-10-29   -3.747811
2020-10-30   -3.866789
我想要的结果是只得到小于-3的第一个值。所以结果是这样的

Date         Return
2020-10-14   -3.771381
2020-10-22   -3.751839
2020-10-29   -3.747811
理想情况下,在一个新列中也可以得到小于-3的计数值

Date         Return     streak
2020-10-14   -3.771381  3
2020-10-22   -3.751839  3
2020-10-29   -3.747811  2
如有任何帮助,将不胜感激。

是,请使用过滤器:

df = df[df['Return'] < -3]
df=df[df['Return']<-3]

将值移动一个位置,以便在“一次性”索引下进行比较。
从这里开始,只需使用双重条件进行过滤

df['Return'] < -3 and df['shifted'] > -3
df['Return']<-3和df['shift']>-3

有了这些线索,你能处理编码细节吗?

这将返回所有小于-3的行,而不是我认为@Prune的第一行。而不是“and”,我需要按位执行:df[(df['Return']-3)]