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

Pandas多匹配连接实现:按列合并DataFrame并追加多匹配结果

解决DataFrame按列连接并合并多匹配结果的问题

问题描述

将两个DataFrame按单一列(如ID)连接,当存在多匹配情况时,把匹配到的结果合并追加至同一列,而非生成多行。

示例数据

  • 第一个DataFrame(用户信息):
IDName
1Alice
2Bob
3Charlie
  • 第二个DataFrame(科目信息):
IDSubject
1Math
1Science
2English

期望输出

IDNameSubject
1AliceMath, Science
2BobEnglish
3CharlieNaN

解决方案

使用Pandas的分组聚合+左连接即可实现需求,具体步骤如下:

代码实现

import pandas as pd

# 构造示例DataFrame(替换为你的实际数据即可)
df_user = pd.DataFrame({
    'ID': [1, 2, 3],
    'Name': ['Alice', 'Bob', 'Charlie']
})

df_subject = pd.DataFrame({
    'ID': [1, 1, 2],
    'Subject': ['Math', 'Science', 'English']
})

# 按ID分组,将同一ID下的科目合并为逗号分隔的字符串
df_subject_agg = df_subject.groupby('ID')['Subject'].apply(', '.join).reset_index()

# 左连接两个DataFrame,保留用户表的所有行
final_df = pd.merge(df_user, df_subject_agg, on='ID', how='left')

print(final_df)

代码说明

  • groupby('ID')['Subject'].apply(', '.join):对科目表按ID分组,将每组内的Subject值合并为一个字符串,用逗号加空格分隔
  • reset_index():把分组后的索引转换为普通列,避免合并时出现索引不匹配的问题
  • pd.merge(..., how='left'):采用左连接方式,确保用户表中的所有记录都被保留,没有匹配科目的行将显示NaN

内容的提问来源于stack exchange,提问作者Silent Killer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 11:30:58