问题说明
我有两个对应的DataFrame,一个是员工表,一个为职务目录表,它们的一列中填充了数组,我想从两个DataFrame(我使用了np.intersect1d
(中找到skill_set
列中两个数组的交集,并将值返回给员工DataFrame中每个id的员工DataFrame
因此,员工DataFrame中的1 id将被循环,以查找同一职务级别的职务目录DataFrame中所有job_name
与当前员工职务级别的交集。最终输出意味着从作业DataFrames中找到具有最高相交量的5个作业(使用len
,因为np.intersect1d
返回list
(。
employee_data
+----+--------+----------+----------+
| id|emp_name| job_rank| skill_set|
+----+--------+----------+----------+
| 2| c | 1|[a1,a2,a3]|
| 2| a | 2|[a1,a2,a3]|
| 1| c | 3|[a1,a2,a3]|
| 1| j | 4|[a1,a2,a3]|
| 3| k | 5|[a1,a2,a3]|
| 1| l | 6|[a1,a2,a3]|
+----+--------+----------+----------+
job_data
+----+--------+----------+----------+
| id|job_name| job_rank| skill_set|
+----+--------+----------+----------+
| 2| c | 1|[a1,a2,a3]|
| 2| a | 2|[a1,a2,a3]|
| 1| c | 1|[a1,a2,a3]|
| 1| b | 4|[a1,a2,a3]|
| 3| r | 3|[a1,a2,a3]|
| 1| a | 6|[a1,a2,a3]|
| 1| m | 2|[a1,a2,a3]|
| 1| g | 4|[a1,a2,a3]|
+----+--------+----------+----------+
考虑到emp数据和job数据不太大,我可以给你一个如何解决这个问题的想法。
-
对employee_data和job_data执行完全联接(或根据需要进行内部联接(。因此,您的新加入数据将具有len(employee_data(*len(job_data(行,并且将具有两个表中的技能,包括员工详细信息
|emp_details|emp_skill|job_details| job_skill|
-
对该表进行操作,查找emp_skills中的哪一个与带(lambda(函数的job_skills匹配。使用函数可以轻松地对数组对象进行操作。
-
从行中选择emp详细信息