我有一个 Pandas Dataframe,其索引和值在 0 到 1 之间,如下所示:
6 0.047033
7 0.047650
8 0.054067
9 0.064767
10 0.073183
11 0.077950
我想检索元组超过 5 个连续值均超过某个阈值(例如 0.5)的区域的起点和终点。这样我就会有这样的东西:
[(150, 185), (632, 680), (1500,1870)]
其中第一个元组属于从索引 150 开始的区域,有 35 个行中全部大于 0.5 的值,并以索引 185 结束(不包含)。
我首先只过滤大于 0.5 的值,如下所示
df = df[df['values'] >= 0.5]
现在我有这样的价值观:
632 0.545700
633 0.574983
634 0.572083
635 0.595500
636 0.632033
637 0.657617
638 0.643300
639 0.646283
我无法显示我的实际数据集,但以下数据集应该是一个很好的表示
import numpy as np
from pandas import *
np.random.seed(seed=901212)
df = DataFrame(range(1,501), columns=['indices'])
df['values'] = np.random.rand(500)*.5 + .35
产量:
1 0.491233
2 0.538596
3 0.516740
4 0.381134
5 0.670157
6 0.846366
7 0.495554
8 0.436044
9 0.695597
10 0.826591
...
其中区域 (2,4) 有两个大于 0.5 的值。然而这太短了。另一方面,连续有 19 个值高于 0.5 的区域 (25,44) 将被添加到列表中。