如何在两个数据帧中找到数组填充列的交集



问题说明

我有两个对应的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数据不太大,我可以给你一个如何解决这个问题的想法。

  1. 对employee_data和job_data执行完全联接(或根据需要进行内部联接(。因此,您的新加入数据将具有len(employee_data(*len(job_data(行,并且将具有两个表中的技能,包括员工详细信息

    |emp_details|emp_skill|job_details| job_skill|

  2. 对该表进行操作,查找emp_skills中的哪一个与带(lambda(函数的job_skills匹配。使用函数可以轻松地对数组对象进行操作。

  3. 从行中选择emp详细信息

最新更新