You need to enable JavaScript to run this app. 如何在Pandas中基于公共列拼接不同列的DataFrame
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pandas中基于公共列拼接不同列的DataFrame

多DataFrame纵向整合实现方案

需求1:保留所有列、缺失值自动填充空值

这是pd.concat的原生支持能力,直接传入所有待合并的DataFrame列表即可实现:

# 自动对齐所有列,df1缺失的Extra1、Extra2列会自动填充为NaN(等价于NULL)
combined_full = pd.concat([df1, df2], axis=0, ignore_index=True)

执行后会保留所有来源表的全部列,不存在的字段位置自动填充空值,完全满足“尽可能保留更多信息”的要求。

需求2:仅保留指定公共列完成纵向拼接

如果不需要保留额外字段,只对齐确定的公共列做行拼接,可以先过滤每个表的列再合并:

# 定义确定要保留的公共列清单
common_cols = ["Name", "Status"]
# 逐表过滤列后再纵向合并
combined_common = pd.concat([df[common_cols] for df in [df1, df2]], axis=0, ignore_index=True)

合并后仅保留清单内的字段,不会引入其他额外列,适配统一公共字段做后续分析的场景。


之前代码的问题排查

  • 第一行concat代码运行失败的核心原因:传入的合并列表中出现了未定义的变量df,对应示例场景你实际需要合并的是df1,属于变量名拼写错误,修正为传入所有待合并的DataFrame列表即可正常运行。
  • 第二行combine_first的逻辑不匹配需求:这个方法是按索引横向对齐补值的逻辑,本质是左右方向的列合并,执行后会把相同Name的记录合并为一行,而不是把不同来源的行纵向叠放,和你预期的纵向拼接效果完全偏离。

表格渲染异常的原因

你遇到的“预览正常但实际加载无格式”的问题,通常是两类场景导致:

  • 在Jupyter类运行环境中:没有显式触发DataFrame的富文本输出,仅靠隐式打印经常会退化成纯文本展示
  • 在Markdown文档中:表格的语法结构不完整,预览端的容错能力强可以正常识别,正式渲染端对语法要求严格,就会显示为无格式的纯文本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.28 10:45:06