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

如何对列不同的两个Pandas DataFrame执行concat实现对齐合并

Pandas按公共列对齐合并两个DataFrame的解决方案

你之前使用pd.concat时指定axis=0是纵向堆叠行的逻辑,只会把两个DataFrame的行直接追加,不会按公共列A的值做行匹配对齐,所以不符合需求。有两种常用方案可以实现目标效果:


方法1:使用pd.merge外连接(最直观)

直接指定公共关联列、连接方式为外连接即可保留两个表所有A列的取值,匹配不到的字段自动填充NaN:

import pandas as pd
# 构造示例数据
df1 = pd.DataFrame({'A': ['a1', 'a2', 'a3'], 'B': ['b1', 'b2', 'b3']})
df2 = pd.DataFrame({'A': ['a1', 'a4'], 'C': ['c1', 'c4']})
# 外连接合并
res = pd.merge(df1, df2, on='A', how='outer')

运行后res的输出就是你需要的目标结果:

ABC
a1b1c1
a2b2NaN
a3b3NaN
a4NaNc4

方法2:使用pd.concat按索引对齐实现

如果要使用concat,需要先把公共列A设为两个DataFrame的索引,再指定axis=1横向拼接,concat会自动按索引对齐取值,最后重置索引即可:

res = pd.concat(
    [df1.set_index('A'), df2.set_index('A')],
    axis=1
).reset_index()

两种方法得到的结果完全一致,可根据使用习惯选择。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 13:06:05