You need to enable JavaScript to run this app. pd.concat合并两数据集同名列时如何保持原数据集列数?
优惠活动
大模型
产品
解决方案
定价
更多

pd.concat合并两数据集同名列时如何保持原数据集列数?

问题根因

你使用pd.concat时得到不符合预期的结果,是因为concat的join参数的作用逻辑和你的实际需求不匹配:

  • join='inner'模式下,concat只会保留两个数据集的共有列,会直接丢弃dataset独有的Subject列,无法保留原dataset的列结构
  • join='outer'模式下,concat会保留两个数据集的所有列,会把dataset2独有的Contact Number列加入结果,引入不需要的冗余字段
实现方法

要达成「保留dataset全部列结构,仅将dataset2的同名列纵向拼接到对应位置,dataset2独有的列直接丢弃」的目标,不需要依赖concat的join参数做列过滤,只需在拼接前先对齐两个数据集的列结构即可:

  • 通过reindex将dataset2的列完全对齐为dataset的列:自动剔除dataset2独有的Contact Number类冗余列,自动为dataset2补上dataset独有的Subject列,缺失值自动填充为空
  • 列结构对齐后,直接执行纵向拼接即可

对应可直接运行的代码:

# 对齐dataset2的列结构,完全匹配dataset的列名与列顺序
dataset2_aligned = dataset2.reindex(columns=dataset.columns)
# 纵向拼接并重置行索引,避免索引重复
new = pd.concat([dataset, dataset2_aligned], ignore_index=True)
效果说明

执行上述代码得到的结果完全匹配你的预期:

  • 完整保留dataset原有的Message Source/Customer Id/Social Medya/Subject四列结构,不会丢失Subject列
  • dataset2中三个共有列的所有数据会自动纵向拼接到对应列下
  • dataset2不包含的Subject列会自动填充空值,dataset2独有的Contact Number列会被直接剔除,不会出现在最终结果中

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.01 19:45:08