Python 基于列中的值匹配两个数据帧
我正试图根据不同的几个变量将求职者与导师进行匹配,希望能创造一个良好的匹配。有两个熊猫数据框(一个用于应聘者,一个用于导师),我正试图根据经验、地点、期望的工作等建立联系 例如,我有一个mentor数据框,它可能看起来像下面这样:Python 基于列中的值匹配两个数据帧,python,pandas,Python,Pandas,我正试图根据不同的几个变量将求职者与导师进行匹配,希望能创造一个良好的匹配。有两个熊猫数据框(一个用于应聘者,一个用于导师),我正试图根据经验、地点、期望的工作等建立联系 例如,我有一个mentor数据框,它可能看起来像下面这样: mentor_df = pd.DataFrame({ "Mentor":["Bob", "Kate", "Joe", "Mark"], &quo
mentor_df = pd.DataFrame({
"Mentor":["Bob", "Kate", "Joe", "Mark"],
"Experience":[3, 4, 5, 4],
"Location": ["US", "FR", "JP", "US"],
"Industry": ["Tech", "Tech", "Media", "Medicine"]
})
Mentor Experience Location Industry
0 Bob 3 US Tech
1 Kate 4 FR Tech
2 Joe 5 JP Media
2 Mark 4 US Medicine
candidate_df = pd.DataFrame({
"Candidate":["Candidate 1", "Candidate 2", "Candidate 3"],
"Experience":[4, 4, 5],
"Location": ["US", "FR", "JP", "US"],
"Industry": ["Tech", "Media", "Medicine"]
})
Candidate Experience Location Industry
0 Candidate 1 4 US Tech
1 Canidate 2 4 FR Media
2 Canidate 3 5 JP Medicine
以及相应的候选数据帧,如下所示:
mentor_df = pd.DataFrame({
"Mentor":["Bob", "Kate", "Joe", "Mark"],
"Experience":[3, 4, 5, 4],
"Location": ["US", "FR", "JP", "US"],
"Industry": ["Tech", "Tech", "Media", "Medicine"]
})
Mentor Experience Location Industry
0 Bob 3 US Tech
1 Kate 4 FR Tech
2 Joe 5 JP Media
2 Mark 4 US Medicine
candidate_df = pd.DataFrame({
"Candidate":["Candidate 1", "Candidate 2", "Candidate 3"],
"Experience":[4, 4, 5],
"Location": ["US", "FR", "JP", "US"],
"Industry": ["Tech", "Media", "Medicine"]
})
Candidate Experience Location Industry
0 Candidate 1 4 US Tech
1 Canidate 2 4 FR Media
2 Canidate 3 5 JP Medicine
将候选人与导师联系起来的结果数据框可能如下所示
Mentor Experience Location Candidate Industry
0 Bob 3 US NaN NaN
1 Kate 4 FR Candidate 2 Tech
2 Joe 5 JP Candidate 3 Media
2 Mark 4 US Candidate 1 Medicine
请注意,导师的数据框将比候选人的数据框大,因为每个候选人都应该收到
任何关于如何最好地解决这个问题的想法都将不胜感激:)
另外,我知道这可能读起来像是一个家庭作业问题,但这个应用程序的目的是帮助分离的军人和退伍军人找到工作,让他们与他们感兴趣的职业领域的导师配对。@Henry走上了正确的道路。您需要将候选数据帧修改为a)确保所有数组的长度相同(如果没有,则添加
NaN
s),以及b)稍微调整以确保确实有一些匹配项
我使用了你的导师和以下候选人:
candidate_df = pd.DataFrame({
"Candidate":["Candidate 1", "Candidate 2", "Candidate 3", "Candidate 4"],
"Experience":[4, 4, 5, 4],
"Location": ["US", "FR", "JP", "US"],
"Industry": ["Tech", "Media", "Medicine", "Medicine"]
})
然后合并工作正常:
merged = mentor_df.merge(candidate_df, how='left')
输出:
Mentor Experience Location Industry Candidate
0 Bob 3 US Tech NaN
1 Kate 4 FR Tech NaN
2 Joe 5 JP Media NaN
3 Mark 4 US Medicine Candidate 4
注意:在有候选人和导师之前,您需要到达最后一行,因为这是经验、地点和行业的匹配,除非这三者都匹配,否则您在候选人或导师中都会得到NaN
祝你好运 这两个df目前都被命名为
mentor\u df
,但假设它们不是,也假设第二个df可以构建,位置上的第四个条目被删除,并且行业正确对齐:类似于mentor\u df.merge(候选者_df,how='left')
。这里有很多好信息:哦,谢谢你的关注。已更新为候选者_df并将立即查看合并。。。