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

如何用Pandas合并两个DataFrame,保留全量行并补充额外信息?

解决Pandas左连接DataFrame匹配异常的问题

看起来你想要用第一个全量行的DataFrame作为基础,把第二个DataFrame的额外信息通过seq_id1和seq_id2匹配补充进去,但之前的代码没得到预期结果,问题出在没有明确指定合并的键上,我来帮你修正:

问题原因

你之前的pd.merge没有指定on参数,Pandas会默认用所有列名完全相同的列作为合并键。如果两个DataFrame里除了seq_id1和seq_id2之外,还有其他同名列(比如other_columns),那么合并时会同时用这些列来匹配——只有当seq_id1、seq_id2和other_columns都完全一致的行才会被匹配,这就会导致很多本该匹配的行被过滤掉,或者出现不符合预期的NA。

另外还要注意两个DataFrame的列名是否一致,比如第一个里的other columns(带空格)和第二个里的other_columns(带下划线)是不同的列名,这也会影响合并逻辑。

修正后的代码

import pandas as pd

# 读取两个数据集
Tax_id = pd.read_csv("0042_HYposoter_tax_best-hit.csv", header=0)
data_grpd_max = pd.read_csv("data_grpd_max_tax_0035.txt", sep='\t')

# (可选)如果两个DataFrame的非键列名不一致,先统一列名
# 比如把第一个DataFrame的"other columns"重命名为"other_columns":
# data_grpd_max.rename(columns={"other columns": "other_columns"}, inplace=True)

# 关键:明确指定用seq_id1和seq_id2作为合并键,执行左连接
data = pd.merge(data_grpd_max, Tax_id, how='left', on=['seq_id1', 'seq_id2'])

# 保存结果(建议加上index=False避免保存多余的索引列)
data.to_csv("data_grpd_max_tax_0042_new.txt", sep='\t', index=False)

验证示例

用你给出的示例数据测试:

# 模拟你的第一个全量DataFrame
df_full = pd.DataFrame({
    'seq_id1': ['seq1_A', 'seq2_A', 'seq4_A', 'seq9_A', 'seq10_A'],
    'seq_id2': ['seq2_B', 'seq3_B', 'seq9_B', 'seq9_B', 'seq8_B'],
    'other_columns': ['something']*5
})

# 模拟你的第二个含额外字段的DataFrame
df_extra = pd.DataFrame({
    'seq_id1': ['seq1_A', 'seq4_A'],
    'seq_id2': ['seq2_B', 'seq9_B'],
    'other_columns': ['something', 'something'],
    'aditionnal_info_columns': ['kingdom1', 'kingdom2']
})

# 执行左连接
result = pd.merge(df_full, df_extra, how='left', on=['seq_id1', 'seq_id2'])
print(result)

输出完全符合你的预期:

seq_id1 seq_id2 other_columns aditionnal_info_columns
0   seq1_A  seq2_B     something                kingdom1
1   seq2_A  seq3_B     something                     NaN
2   seq4_A  seq9_B     something                kingdom2
3   seq9_A  seq9_B     something                     NaN
4  seq10_A  seq8_B     something                     NaN

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:12:03