gpt4 book ai didi

python - 查找最近索引值的最快方法

转载 作者:太空宇宙 更新时间:2023-11-03 12:37:48 25 4
gpt4 key购买 nike

考虑时间序列 s 及其索引 tidx

tidx = pd.date_range('2010-12-31', periods=3, freq='M')
s = pd.Series([0, 31, 59], tidx)

如果我想使用 s 作为查找系列并传递日期 '2011-02-23',我想获得最近可用的值.在这种情况下,它将是 31

我已经做了

s.resample('D').ffill().loc['2011-02-23']

31

这可以完成工作,但我必须对整个系列重新采样才能获得单个值。更合适的方法是什么?

最佳答案

你可以使用 searchsorted -

s[s.index.searchsorted('2011-02-23','right')-1]

乐趣在于击败自己!因此,这里有更多的 NumPy 用于进一步提升性能 -

s[s.index.values.searchsorted(np.datetime64('2011-02-23'),'right')-1]

运行时测试-

In [235]: tidx = pd.date_range('2010-12-31', periods=300, freq='M')
...: s = pd.Series(range(300), tidx)
...:

In [236]: s[s.index.searchsorted('2035-03-23','right')-1]
Out[236]: 290

In [237]: s[s.index.values.searchsorted(np.datetime64('2035-03-23'),'right')-1]
Out[237]: 290

In [238]: %timeit s[s.index.searchsorted('2035-03-23','right')-1]
10000 loops, best of 3: 63 µs per loop

In [239]: %timeit s[s.index.values.searchsorted(np.datetime64('2035-03-23'),'right')-1]
10000 loops, best of 3: 46.7 µs per loop

关于python - 查找最近索引值的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40369581/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com