首页 > 解决方案 > 计算满足时间序列中特定条件的连续行

问题描述

我有一个看起来像下面的屏幕截图的数据框(数据可在下面重现)。我需要计算 0.1 以上的连续行数,直到最后一行。换句话说,从第 18 行开始往回走,连续行的计数高于 0.1。每列的结果应该是:

48184 = 18
57256 = 8
63893 = 0

我试图在数据帧上放置一个掩码,但我不知道如何确保掩码只考虑从第 18 行向后开始的连续行。任何帮助深表感谢!

    48184       57256       63893
0   0.000000    0.000000    0.000000
1   0.291498    0.004463    0.015055
2   0.430303    0.004463    0.015055
3   0.430303    0.004463    0.021197
4   0.430303    0.004463    0.006142
5   0.430303    0.029888    0.029561
6   0.430303    0.048527    0.029561
7   0.430303    0.073234    0.023419
8   0.430303    0.047989    0.041190
9   0.430303    0.077472    0.017771
10  0.430303    0.085486    0.017771
11  0.430303    0.117013    0.017771
12  0.430303    0.159811    0.057744
13  0.430303    0.182291    0.108666
14  0.430303    0.152748    0.068693
15  0.430303    0.140596    0.033474
16  0.430303    0.210749    0.097302
17  0.430303    0.201838    0.097302
18  0.430303    0.249361    0.097302

标签: pythonpandastime-series

解决方案


IIUC,您可以idxmax使用df<=0.1

s = df.le(0.1)
len(s) - 1 - s.loc[::-1].idxmax()

输出:

48184    18
57256     8
63893     0
dtype: int64

推荐阅读