如何动态拼接列数不同的多个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
相关产品推荐
相关产品推荐

