如何获取存在于一个数据框中但不存在于 Pandas 的第二个数据框中的行列表

问题描述 投票:0回答:1

我有两个数据框——一个是数据库,另一个是实际列表。 数据库:list of skills

技能
技能1
技能2
技能3
技能4

列表:list of pairs

工人 skills_of_worker
工人1 技能1
工人1 技能2
工人1 技能3
工人2 技能2
工人2 技能3
工人2 技能4
工人3 技能1
工人3 技能3
工人3 技能4

如何获得数据库中但不在列表中的工人技能对列表?:what I need

工人 skills_they_dont_have
工人1 技能4
工人2 技能1
工人3 技能2

我尝试了不同的合并和删除重复项的方法,但是,由于实际的工人名单很长,技能存在重复项。

python-3.x pandas
1个回答
0
投票

我会用

set
操作(
difference
),然后
explode

skills = {'skill1', 'skill2', 'skill3', 'skill4'}

out = (
  df.groupby('worker', as_index=False)['skills_of_worker']
   .agg(skills.difference)
   .explode('skills_of_worker')
   .rename(columns={'skills_of_worker': 'skills_they_dont_have'})
)

输出:

    worker skills_they_dont_have
0  worker1                skill4
1  worker2                skill1
2  worker3                skill2
© www.soinside.com 2019 - 2024. All rights reserved.