Подсчет последовательных строк, соответствующих определенному условию во временных рядах - PullRequest
0 голосов
/ 25 сентября 2019

У меня есть фрейм данных, который выглядит как на скриншоте ниже (данные воспроизводятся ниже).Мне нужно посчитать количество последовательных строк выше 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 Ответ

2 голосов
/ 25 сентября 2019

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...