当我必须在长 pandas 系列(> 15 M 元素)中搜索时,如何优化 'enumerate'?
How can I optimize 'enumerate' when I have to search in a long pandas Series (> 15 M elements)?
我有一个包含时间信息(代表秒的浮点数)的 pandas 系列,例如,我需要识别时间大于 x 的索引。我目前正在使用 enumerate 来完成它,但我不确定这是最好的方法,因为它需要一点时间来执行。我想知道是否有任何矢量化的方式来执行此操作。
index = [i for i, val in enumerate(df['time']) if val >= x][0]
示例系列:
time
0.0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
df[df['time'] >= x].index
或
np.nonzero(df['time'].values >= x)[0]
编辑:
如果您只需要第一次出现:
np.argmax(df['time'].values >= x)
只获取时间大于x
的第一个索引:
next(t[0] for t in df.itertuples() if t.time > x)
我有一个包含时间信息(代表秒的浮点数)的 pandas 系列,例如,我需要识别时间大于 x 的索引。我目前正在使用 enumerate 来完成它,但我不确定这是最好的方法,因为它需要一点时间来执行。我想知道是否有任何矢量化的方式来执行此操作。
index = [i for i, val in enumerate(df['time']) if val >= x][0]
示例系列:
time
0.0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
df[df['time'] >= x].index
或
np.nonzero(df['time'].values >= x)[0]
编辑:
如果您只需要第一次出现:
np.argmax(df['time'].values >= x)
只获取时间大于x
的第一个索引:
next(t[0] for t in df.itertuples() if t.time > x)