У меня есть фрейм данных
c.head()
near_code code
321 FFZ1988 FFZ1988
322 FFZ1988 FFF1989
323 FFZ1988 FFG1989
324 FFZ1988 FFH1989
325 FFZ1988 FFJ1989
И еще один:
uni.iloc[:,0:7].head()
near_code 2 3 4 5
319 FFZ1988 FFF1989 FFG1989 FFH1989 FFJ1989
0 FFF1989 FFG1989 FFH1989 FFJ1989 FFK1989
29 FFG1989 FFH1989 FFJ1989 FFK1989 FFM1989
58 FFH1989 FFJ1989 FFK1989 FFM1989 FFN1989
87 FFJ1989 FFK1989 FFM1989 FFN1989 FFQ1989
Теперь для каждого near_code в 'c' мне нужно найти номер столбца соответствующего кода в uni,например, для первой строки c ответом будет «code», т.е. сначала найдите «near_code» = FFZ1988 в универсальном столбце «near_code», а затем выясните, в каком столбце находится соответствующий «code» (= FFZ1988), расположенный в.Для второй строки ответ - «2», для третьей - «3» и т. Д.
Я написал следующее, чтобы реализовать это, но он работает очень медленно
def find_relative_col(nearest_code,current_code,uni):
#this function needs to be applied to every row of c to find what is the relative position of code vs near_code
rel_row = uni[uni.near_code==nearest_code]
t= rel_row.T
t.columns =['code']
t = t.reset_index()
ans = t[t.code == current_code]['index']
return ans
ans = c.apply(lambda x: find_relative_col(*x, uni), axis=1)
Есть ли более быстрый способ сделать это