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

如何用Pandas合并两个DataFrame并保留匹配与不匹配行?

Pandas合并DataFrame并保留所有匹配/不匹配行的方法

完全可以实现,你只需要在merge方法中指定how='outer'参数,这就是外连接,会保留两个DataFrame中所有的行——匹配的行会合并对应列,不匹配的行在对方没有的列位置填充NaN。

示例代码

假设你的DF1和DF2结构如下,我们用实际代码演示:

import pandas as pd

# 示例DF1
df1 = pd.DataFrame({
    'ID': [1, 2, 3],
    'Name': ['Alice', 'Bob', 'Charlie'],
    'Age': [25, 30, 35]
})

# 示例DF2
df2 = pd.DataFrame({
    'ID': [1, 3, 4],
    'City': ['NY', 'LA', 'Chicago'],
    'Salary': [50000, 60000, 70000]
})

# 执行外连接合并
merged_result = df1.merge(df2, on='ID', how='outer')
print(merged_result)

输出结果

ID     Name   Age     City   Salary
0   1    Alice  25.0       NY  50000.0
1   2      Bob  30.0      NaN      NaN
2   3  Charlie  35.0       LA  60000.0
3   4      NaN   NaN  Chicago  70000.0

补充说明

  • 如果两个DataFrame的连接列名称不同,比如DF1用user_id,DF2用id,可以用left_on和right_on分别指定:
    merged_result = df1.merge(df2, left_on='user_id', right_on='id', how='outer')
    
  • 如果需要按多个列进行匹配,把列名放在列表里传给on参数即可:
    merged_result = df1.merge(df2, on=['ID', 'Group'], how='outer')
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 09:55:24