查找与pandas中的值对应的列标签

时间:2018-06-07 20:08:46

标签: python pandas numpy lookup

我有一个数据框

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

现在对于'c'中的每个near_code,我需要在uni中找到相应代码的列号。例如对于c的第一行,答案是'code',即首先在uni列'near_code'中找到'near_code'= FFZ1988,然后找出哪一列是相应的'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)

有更快的方法吗

0 个答案:

没有答案