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

如何合并列数不等的两个Pandas DataFrame并保留全部列?

解决方法:合并DataFrame并保留所有列(缺失值自动填充)

原代码报错的核心原因是np.vstack要求输入的数组列数完全一致,但df1有2列、df2有3列,列数不匹配导致运行失败;另外就算列数一致,这种方式也只会保留df1的列名,丢失df2的其他列,完全不符合需求。

直接使用pandas内置的pd.concat()函数就能完美解决问题,它会自动对齐两个DataFrame的列名,不存在的列会自动填充缺失值(NaN):

import pandas as pd

df1 = pd.DataFrame({'a':[1,2,3],'y':[7,8,9]})
df2 = pd.DataFrame({'b':[10,11,12],'x':[13,14,15],'y':[16,17,18]})

# 合并两个DataFrame,忽略原索引并自动对齐列
result_df = pd.concat([df1, df2], ignore_index=True)
print(result_df)

运行结果:

a    y     b     x
0  1.0  7.0   NaN   NaN
1  2.0  8.0   NaN   NaN
2  3.0  9.0   NaN   NaN
3  NaN  16.0  10.0  13.0
4  NaN  17.0  11.0  14.0
5  NaN  18.0  12.0  15.0

如果需要将缺失值替换为指定值(比如0),可以在合并后调用fillna():

result_df = pd.concat([df1, df2], ignore_index=True).fillna(0)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 03:12:03