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

如何动态拼接列数不同的多个DataFrame?

Pandas动态拼接DataFrame:自动对齐列并填充NaN

直接用Pandas的pd.concat()函数就能实现你要的动态拼接需求,不需要手动指定列,它会自动处理列的对齐和缺失值填充,完全符合你的逻辑:

核心实现逻辑

pd.concat()会自动收集所有待拼接DataFrame的列,生成完整的列集合;对于某个DataFrame缺失的列,对应行自动填充NaN;如果新DataFrame包含主DF没有的列,主DF对应的历史行会自动填充NaN,同时结果中会保留这个新列。

示例代码

import pandas as pd

# 主DF1(初始标准DF)
df1 = pd.DataFrame({
    'A': [1, 2, 3],
    'B': [4, 5, 6],
    'C': [7, 8, 9]
})

# DF2:缺少列C
df2 = pd.DataFrame({
    'A': [10, 11],
    'B': [12, 13]
})

# DF3:包含新列D
df3 = pd.DataFrame({
    'A': [14, 15],
    'B': [16, 17],
    'C': [18, 19],
    'D': [20, 21]
})

# 一次性拼接所有DF,自动处理列对齐
result = pd.concat([df1, df2, df3], ignore_index=True)
print(result)

输出结果

A   B     C     D
0   1   4   7.0   NaN
1   2   5   8.0   NaN
2   3   6   9.0   NaN
3  10  12   NaN   NaN
4  11  13   NaN   NaN
5  14  16  18.0  20.0
6  15  17  19.0  21.0

逐步追加的方式

如果需要每次追加一个新DF到主DF,同样可以用pd.concat()动态更新:

# 追加DF2到主DF1
df1 = pd.concat([df1, df2], ignore_index=True)
# 再追加DF3到更新后的主DF1
df1 = pd.concat([df1, df3], ignore_index=True)

关键参数说明

  • ignore_index=True:重置结果的索引,避免原DF的索引重复,根据实际需求选择是否启用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 21:01:05