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

如何在Python Pandas中基于Accession Number合并三个DataFrame?

基于Accession Number合并DataFrame的解决方案

核心逻辑

以DF1的Accession Number为基准,通过两次左连接实现需求:

  • 保留DF1所有行,无匹配的Accession对应列自动填充NaN
  • 若DF2/DF3存在重复Accession,DF1对应行自动重复以匹配这些重复项

代码实现

import pandas as pd

# 第一步:合并DF1与DF2,保留DF2的重复匹配项
merged_df1_df2 = pd.merge(DF1, DF2, on='Accession Number', how='left')

# 第二步:将合并结果与DF3再次合并,保留DF3的重复匹配项
final_result = pd.merge(merged_df1_df2, DF3, on='Accession Number', how='left')

关键说明

  1. 左连接的作用:how='left'参数确保DF1的34376条记录全部保留,DF2/DF3中无匹配的Accession对应的额外列会自动填充NaN(即你说的Null)。
  2. 处理重复Accession:当DF2/DF3中存在同一Accession的多条记录时,merge操作会自动复制DF1中对应的行,与这些重复记录一一匹配,满足“DF1对应行需重复”的要求。
  3. 列数说明:最终结果包含DF1的13列、DF2的27个额外列(排除共同的Accession Number)、DF3的13个额外列,总列数为53列;行数则根据DF2/DF3的重复情况有所增加。

额外提示

  • 先确认三个DataFrame的Accession Number列数据类型一致(比如统一为字符串),避免因类型不匹配导致匹配失败。
  • 若需要替换NaN,可使用fillna()方法,例如:
    # 用0填充所有空值,可根据需求调整填充值
    final_result.fillna(0, inplace=True)
    

内容的提问来源于stack exchange,提问作者Manas Jadhav

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 17:45:48