比较两个数据帧并在Python中创建比较矩阵?

2024-10-02 08:15:11 发布

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

电磁脉冲额定值

  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

输出_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


Tags: ida2dfa1员工评分a3a4
1条回答
网友
1楼 · 发布于 2024-10-02 08:15:11

您可以尝试以下方法:

第一次合并和筛选:

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

相关问题 更多 >

    热门问题