Допустим, у меня есть Pandas серия:
num = pd.Series([1,2,3,4,5,6,5,6,4,2,1,3])
Что я хочу сделать, это получить число, скажем, 5, и вернуть индекс, где он ранее имел место , Так что, если я использую элемент 5, я должен получить 4, так как элемент появляется в индексах 4 и 6. Теперь я хочу сделать это для всех элементов серии, и это легко сделать, используя a для l oop:
for idx,x in enumerate(num):
idx_prev = num[num == x].idxmax()
if(idx_prev < idx):
return idx_prev
Однако этот процесс занимает слишком много времени для длинных серий из-за зацикливания. Есть ли способ реализовать то же самое, но в векторизованной форме? Вывод должен выглядеть примерно так:
[NaN,NaN,NaN,NaN,NaN,NaN,4,5,3,1,0,2]