如何计算 pandas 系列中到前一个零的距离?

2024-06-26

我有以下 pandas 系列(以列表形式表示):

[7,2,0,3,4,2,5,0,3,4]

我想定义一个新的系列,返回到最后一个零的距离。这意味着我想要以下输出:

[1,2,0,1,2,3,4,0,1,2]

如何以最有效的方式在 pandas 中做到这一点?


复杂度是O(n)。会减慢速度的是做一个for在Python中循环。如果有k系列中的零点,以及log k与系列的长度相比可以忽略不计O(n log k)解决方案是:

>>> izero = np.r_[-1, (ts == 0).nonzero()[0]]  # indices of zeros
>>> idx = np.arange(len(ts))
>>> idx - izero[np.searchsorted(izero - 1, idx) - 1]
array([1, 2, 0, 1, 2, 3, 4, 0, 1, 2])
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何计算 pandas 系列中到前一个零的距离? 的相关文章

随机推荐