假设我订购了一些JSON格式的多标准编码语言专家:
request = {'languages_required': {'Python': 4,
'Java': 2},
'other_requests': []
}
languages_required意味着候选人必须具备该语言的技能,人数是该语言的最低水平.
候选数据帧的格式很长:
df = pd.DataFrame({'candidate': ['a', 'a', 'a', 'b', 'b', 'c', 'c', 'd', 'd', 'd'],
'language': ['Python', 'Java', 'Scala', 'Python', 'R', 'Python', 'Java', 'Python', 'Scala', 'Java'],
'skill': [5, 4, 4, 6, 8, 1, 3, 5, 2, 2]})
这就产生了:
candidate language skill
0 a Python 5
1 a Java 4
2 a Scala 4
3 b Python 6
4 b R 8
5 c Python 1
6 c Java 3
7 d Python 5
8 d Scala 2
9 d Java 2
我需要做的是用符合申请要求的所需语言保留候选人及其技能,即:
- 具备上述两种语言的技能
- 这些语言的技能等于或高于词典中的值
因此,预期输出为:
candidate language skill
0 a Python 5
1 a Java 4
7 d Python 5
9 d Java 2
我能够根据字典的键()筛选候选语言:
lang_mask = df[df['language'].isin(request['languages_required'].keys())]\
.groupby('candidate')['language']\
.apply(lambda x: set(request['languages_required']).issubset(x))
…但在每种语言条件下,添加"高于"的难度很大.我真的很感谢你的帮助.