Поиск ближайшей ненулевой пары по заданному индексу - PullRequest
0 голосов
/ 24 октября 2018

У меня есть фрейм данных -

df = pd.DataFrame({'A':[1,1,0,0,0,0,1,1,0],'B':[0,0,0,0,1,1,0,0,0]})

Теперь я хочу вычислить ближайшее вхождение 1,1 в столбце A по отношению к вхождению паттерна 0110 в columnB.У меня есть индекс 1 1 в 0110 (colB) здесь 4, и я получу ответ -2, поскольку пара 11 в столбце A (индекс 6,7) отстает на 2 индекса.

Моя попытка010 шаблон-

anchor = index_value
hnops = min((anchor - df[df.A != 0].index), key=abs) 

1 Ответ

0 голосов
/ 24 октября 2018

Я думаю, что это лучше сделать с пониманием списка NumPy:

Apos = [i for i in range(len(df.A)-1) if list(df.A[i:i+2]) == [1,1]]
Bpos = [i+1 for i in range(len(df.B)-3) if list(df.B[i:i+4]) == [0,1,1,0]]

Apos, Bpos
>>> ([0, 6], [4])

И тогда вы можете найти минимум для каждого элемента в Bpos из Apos, найдя ближайший

diff = [] 
for i in range(len(Apos)):
    index = np.argmin(np.abs(np.asarray(Bpos) - Apos[i]))
    answer = Bpos[index] - Apos[i]
    diff.append(answer)

diff
>>> [4, -2]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...