Emp_rating_df
Emp_Id A1 A2 A3 A4
0 1001 4 3 6 7
1 1002 7 2 4 5
2 1003 3 8 2 6
3 1004 7 5 4 7
Comp_df
Emp_Id A1 A2 A3 A4
0 1001 4 3 6 7
我需要比较两个包含员工评级的df。
Emp_rating_df
包含10个员工评分,并且Comp_df
告诉哪个员工与Emp_rating_df
中的所有员工进行比较。
如果emp A的评级高于任何特定优势栏(A1,A2,A3,A4),则emp B,然后为2,如果相同,则为1,否则为0。
Output_df-
Emp_Id A1 A2 A3 A4
0 1001 1 1 1 1
1 1002 0 2 2 2
2 1003 2 0 2 2
3 1004 0 0 2 1
由于自我比较,第一行将为1。
答案 0 :(得分:1)
您可以尝试以下方法:
首先合并并过滤:
m = Emp_rating_df.merge(Comp_df,'left','Emp_Id').ffill().bfill()
a = m.filter(like='_x')
b = m.filter(like='_y')
然后按条件分配:
cond1 = b.to_numpy() > a.to_numpy()
cond2 = b.to_numpy() == a.to_numpy()
Output = Emp_rating_df.copy()
Output[a.columns.str.split('_').str[0]] = np.select([cond1,cond2],[2,1],0)
print(Output)
Emp_Id A1 A2 A3 A4
0 1001 1 1 1 1
1 1002 0 2 2 2
2 1003 2 0 2 2
3 1004 0 0 2 1