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

如何在Pandas中按公共列的并集横向合并两个DataFrame?

Pandas实现指定格式的DataFrame合并

你可以通过**多级列(MultiIndex)**结合外连接的方式实现这个需求,具体步骤如下:

步骤1:准备示例数据

先还原你给出的两个DataFrame:

import pandas as pd

df1 = pd.DataFrame({
    'id': [1,2,4],
    'name': ['a','b','c'],
    'val': [23,90,72]
}).set_index('id')

df2 = pd.DataFrame({
    'id': [1,3,4],
    'name': ['d','e','f'],
    'val': [88,12,11]
}).set_index('id')

步骤2:给列添加层级标签

为两个DataFrame的列分别加上df1和df2的顶层标签,形成多级列结构:

df1.columns = pd.MultiIndex.from_product([['df1'], df1.columns])
df2.columns = pd.MultiIndex.from_product([['df2'], df2.columns])

步骤3:外连接合并

使用join方法进行外连接,这样会保留所有id,缺失的位置自动填充NaN:

result = df1.join(df2, how='outer')

步骤4:调整列的顺序(可选)

如果需要让df1的name、val和df2的name、val按你给出的顺序排列,可以手动调整列顺序:

result = result[['df1', 'df2']].reindex(columns=['name', 'val'], level=1)

最终输出的result就是你想要的格式:

df1      df2    
    name val name val
id                   
1      a  23    d  88
2      b  90  NaN NaN
3    NaN NaN    e  12
4      c  72    f  11

内容的提问来源于stack exchange,提问作者Aayush Mohan Sinha

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 15:23:20