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

如何拼接不同形状的pandas DataFrame并保留首个表的列结构

解决方法

第一步:打印两个DataFrame无交集的列

使用集合对称差运算直接获取两边独有的列:

# 计算无交集的列
diff_columns = list(set(df1.columns).symmetric_difference(df2.columns))
print("两个表不存在交集的列:", diff_columns)

运行输出:

两个表不存在交集的列: ['val1', 'val2']

第二步:完成拼接

用reindex对齐df2的列到df1的格式后再拼接,完全满足要求:

# 对齐df2列顺序和范围后拼接,自动重置索引
result = pd.concat(
    [df1, df2.reindex(columns=df1.columns)],
    ignore_index=True
)
print(result)

运行输出和预期效果完全一致:

id val val1
0   1   x   x1
1   2   y   y1
2   3   w   w1
3   4   z   z1
4   5   t  NaN
5   6   s  NaN
6   7   v  NaN
7   8   l  NaN

说明

  • 全程没有使用连接操作,仅通过列对齐+行拼接实现需求
  • reindex方法会自动保留df1的列顺序,丢弃df2独有的列,同时将df1存在但df2缺失的列自动填充为NaN
  • ignore_index=True会自动重置拼接后的结果索引,不需要额外调用reset_index()
  • 该写法兼容pandas全版本,避免使用已经在pandas 2.0+中废弃的append方法

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 23:36:03