如何用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
相关产品推荐
相关产品推荐

