python - 根据列中的值匹配两个 Pandas DataFrame
问题描述
我正在尝试根据不同的几个变量将求职者与导师匹配,这有望创造出良好的匹配。我试图根据经验、位置、期望的工作等连接两个 Pandas DataFrame(一个用于候选人,一个用于导师)。
例如,我有一个可能如下所示的导师 DataFrame:
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
以及如下所示的相应候选 DataFrame:
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
将候选人与导师联系起来的 DataFrame 可能如下所示。
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
请注意,导师的 DataFrame 将比每个候选人都应该收到的候选人大。
任何关于如何最好地解决这个问题的想法将不胜感激:)
PS 我知道这可能读起来像一个家庭作业问题,但它的应用程序是通过将他们与他们感兴趣的职业领域的导师配对来帮助分离服务成员和退伍军人找到工作。
解决方案
@Henry 走在正确的道路上。您需要将候选数据框修改为 a) 确保所有数组的长度相同(NaN
如果没有数组,则添加 s,并且 b)稍微调整以确保您确实有一些匹配项。
我使用了您的导师_df,以及以下候选者_df:
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
候选人或导师。
祝你好运!
推荐阅读
- javascript - 阿拉伯文本不会出现在 itextsharp c# .net 中
- ios - How should I got about setting the auto layout / constraints for my iOS view via Storyboard?
- ruby - Ruby if elsif else 问题
- mysql - Cloning server (Linux) environment on my local (Windows) machine using Docker
- sql - 运行计数 SQL 服务器
- google-apps-script - Google Sheets apps script works for me but not other users
- angular - How can I return text with color angular based on value
- python - Selenium 与 Python:使用 Shift+Enter 的换行符可以工作,但会弄乱文本
- android - How can you add IP/Domain to which the android application should communicate to?
- python - 我在 python 中创建了猜谜游戏,但它给出了一个索引错误