如何合并两个含关联值的DataFrame:关联发送者与员工信息
合并消息发送者与员工信息DataFrame
核心方法:使用pandas的merge()函数
pandas的merge()是处理DataFrame关联合并的标准工具,我们只需将消息DataFrame的sender列与员工信息DataFrame的id列作为关联键,即可完成数据合并。
示例代码
假设你的两个DataFrame分别为:
df_messages:存储消息数据,包含sender列(对应员工ID)df_employees:存储员工个人信息,首列为id(员工ID),另有department、age等字段
import pandas as pd # 替换为你的真实数据 df_messages = pd.DataFrame({ 'sender': [79, 79, 80], 'message_content': ['项目进度同步', '需求细节确认', '部门会议通知'] }) df_employees = pd.DataFrame({ 'id': [79, 80, 81], 'department': ['研发部', '市场部', '人事部'], 'age': [32, 28, 40] }) # 执行合并:以sender和id为关联键 merged_result = pd.merge( df_messages, df_employees, left_on='sender', # 左表关联列 right_on='id', # 右表关联列 how='left' # 左连接:保留所有消息记录,无匹配员工信息的行补NaN ) # 可选:删除重复的id列(sender与id内容一致) merged_result = merged_result.drop('id', axis=1) print(merged_result)
关键参数说明
how='left':若需保留所有消息记录(即使部分sender无对应员工信息),用左连接;若仅保留两边匹配成功的记录,使用默认的how='inner'即可。left_on/right_on:明确指定两个DataFrame用于关联的列名,适配两表列名不同的场景。
合并后效果
最终输出会将每条消息与对应发送者的部门、年龄等信息关联,示例结果如下:
| sender | message_content | department | age |
|---|---|---|---|
| 79 | 项目进度同步 | 研发部 | 32 |
| 79 | 需求细节确认 | 研发部 | 32 |
| 80 | 部门会议通知 | 市场部 | 28 |
内容的提问来源于stack exchange,提问作者Orhan Dağ
相关产品推荐
相关产品推荐

