计算时间序列中满足特定条件的连续行

时间:2019-09-25 10:22:31

标签: python pandas time-series

我有一个数据框,看起来像下面的屏幕截图(下面的数据可复制)。我需要计算直到最后一行之前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

1 个答案:

答案 0 :(得分:2)

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