You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何合并df_information与补充岗位组合表,实现用户对应全岗位组合?

需求描述

我有两个DataFrame:

  1. df_information:记录用户信息,包含id_user、job_function、job_area、title字段,数据如下:
id_userjob_functionjob_areatitle
1123Compensation / Benefit PolicyHuman Resourcespersonnel
1124HR Systems AdministrationHuman Resourcespersonnel
1124Cyber Security / Information SecurityIT / Computers / Electronicpersonnel
1125EquipmentManufacturing / Production / Operationsmanager
1602Product DevelopmentIT / Computers / Electronicsdirector
  1. df_all_possible_job_function_job_area:存储各title在df_information中未涵盖的job_function与job_area组合,包含job_function、job_area、title字段,数据如下:
job_functionjob_areatitle
ASIC / Layout DesignTwoIT / Computers / Electronicsdirector
AccountingFinance / Accountingpersonnel
Accounts PayableFinance / Accountingpersonnel
Account ManagementCustomer Support / Client Servicespersonnel

需要将两个DataFrame合并,要求每个id_user对应其title下的所有job_function、job_area组合(包含原表及补充表中的组合),预期修正后结果如下:

id_userjob_functionjob_areatitle
1123Compensation / Benefit PolicyHuman Resourcespersonnel
1123AccountingFinance / Accountingpersonnel
1123Accounts PayableFinance / Accountingpersonnel
1123Account ManagementCustomer Support / Client Servicespersonnel
1124HR Systems AdministrationHuman Resourcespersonnel
1124Cyber Security / Information SecurityIT / Computers / Electronicpersonnel
1124AccountingFinance / Accountingpersonnel
1124Accounts PayableFinance / Accountingpersonnel
1124Account ManagementCustomer Support / Client Servicespersonnel
1125EquipmentManufacturing / Production / Operationsmanager
1602Product DevelopmentIT / Computers / Electronicsdirector
1602ASIC / Layout DesignTwoIT / Computers / Electronicsdirector

(注:原预期结果中存在重复的Accounting记录,属于输入笔误,此处已修正)

解决方案

可通过提取用户-title唯一映射、关联补充表生成组合、合并原表与补充记录三步实现:

import pandas as pd

# 1. 获取用户与title的唯一对应关系,避免同一用户重复关联补充组合
user_title_unique = df_information[['id_user', 'title']].drop_duplicates()

# 2. 将用户-title映射与补充表按title关联,生成用户对应的补充组合记录
supplement_records = pd.merge(user_title_unique, df_all_possible_job_function_job_area, on='title', how='inner')

# 3. 合并原表和补充记录,得到最终结果
final_result = pd.concat([df_information, supplement_records], ignore_index=True)

# 可选:按id_user排序让结果更规整
final_result = final_result.sort_values('id_user').reset_index(drop=True)

print(final_result)

逻辑说明

  1. 去重用户-title映射:解决原表中同一用户多条记录的问题,确保每个用户仅对应自身title一次,避免后续生成重复的补充组合。
  2. 关联补充表:通过merge按title匹配,让每个用户获取对应title下的所有补充job_function+job_area组合。
  3. 合并记录:用concat将原用户记录和新生成的补充记录合并,得到包含所有组合的最终DataFrame。

内容的提问来源于stack exchange,提问作者Rus Zzzeta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 02:35:24