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

如何按列位置而非列名堆叠多个DataFrame并批量实现?

按列位置堆叠多列名不同的DataFrame

核心思路

要实现按列的位置而非列名拼接行,关键是先将所有DataFrame的列名统一(比如用第一个DataFrame的列名作为标准),之后用pd.concat()按行方向堆叠即可。

示例代码(两个DataFrame的情况)

import pandas as pd

# 定义示例DataFrame
df1 = pd.DataFrame(
        {"A": ["A0", "A1", "A2", "A3"],
        "B": ["B0", "B1", "B2", "B3"],
        "C": ["C0", "C1", "C2", "C3"],
        "D": ["D0", "D1", "D2", "D3"], })

df2 = pd.DataFrame(
        {"F": ["A0", "A1", "A2", "A3"],
        "G": ["B0", "B1", "B2", "B3"],
        "K": ["C0", "C1", "C2", "C3"],
        "Z": ["D0", "D1", "D2", "D3"], })

# 统一df2的列名与df1一致(按位置对应)
df2.columns = df1.columns
# 按行堆叠两个DataFrame,ignore_index=True重置行索引
result = pd.concat([df1, df2], axis=0, ignore_index=True)
print(result)

输出结果:

A   B   C   D
0  A0  B0  C0  D0
1  A1  B1  C1  D1
2  A2  B2  C2  D2
3  A3  B3  C3  D3
4  A0  B0  C0  D0
5  A1  B1  C1  D1
6  A2  B2  C2  D2
7  A3  B3  C3  D3

处理多个DataFrame的情况

如果有多个DataFrame(比如存放在列表中),可以通过批量统一列名后拼接:

# 假设多个DataFrame存放在列表dfs中
dfs = [df1, df2, df3, ...]  # 替换为你的数据集列表

# 取第一个DataFrame的列名作为标准
standard_cols = dfs[0].columns

# 批量统一所有DataFrame的列名(不修改原数据)
standardized_dfs = [df.set_axis(standard_cols, axis=1) for df in dfs]

# 堆叠所有标准化后的DataFrame
final_result = pd.concat(standardized_dfs, axis=0, ignore_index=True)

补充说明

  • 直接使用pd.concat()不处理列名的话,会按列名对齐,导致非共同列名的位置出现NaN,不符合需求。
  • set_axis()方法会返回列名统一后的新DataFrame,比直接修改columns属性更安全,避免破坏原始数据。

内容的提问来源于stack exchange,提问作者Oscar Fernando CV

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 14:14:37