我有一个包含浮点值的数据框
my_df = pd.DataFrame([1,2,1,4,3,2,5,4,7])
我正在尝试为每个数字查找(需要移动多少个索引[[向前),直到找到比当前数字大的下一个数字为止,如果没有更大的数字,则用一些数字进行标记值(如999999)。
因此,对于上面的示例,正确答案应该是result = [1,2,1,3,2,1,2,1,999999]
目前,我已经通过itertuples
(意味着O(n ^ 2))非常慢的双循环解决了它有更聪明的方法吗?
a = my_df.squeeze().to_numpy()
diff_mat = a - a[:,None]
result = (np.triu(diff_mat)>0).argmax(1) - np.arange(diff_mat.shape[1])
result[result <= 0] = 99999
print(result) array([ 1, 2, 1, 3, 2, 1, 2, 1, 99999], dtype=int64)