我有一个数据框
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)
有更快的方法吗