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

2024-09-28 03:24:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据帧

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\代码,我需要找到uni中对应代码的列号。e、 g.对于c的第一行,答案是'code',即首先在uni列'near\u code'中找到'near\u 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)

有没有更快的方法


Tags: to答案代码codefindunirelativenear

热门问题