поиск метки столбца, соответствующего значению в пандах - PullRequest
0 голосов
/ 07 июня 2018

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

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)

Есть ли более быстрый способ сделать это

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