Python 基于列中的值匹配两个数据帧

Python 基于列中的值匹配两个数据帧,python,pandas,Python,Pandas,我正试图根据不同的几个变量将求职者与导师进行匹配,希望能创造一个良好的匹配。有两个熊猫数据框(一个用于应聘者,一个用于导师),我正试图根据经验、地点、期望的工作等建立联系 例如,我有一个mentor数据框,它可能看起来像下面这样: mentor_df = pd.DataFrame({ "Mentor":["Bob", "Kate", "Joe", "Mark"], &quo

我正试图根据不同的几个变量将求职者与导师进行匹配,希望能创造一个良好的匹配。有两个熊猫数据框(一个用于应聘者,一个用于导师),我正试图根据经验、地点、期望的工作等建立联系

例如,我有一个mentor数据框,它可能看起来像下面这样:

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并将立即查看合并。。。