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

Python Pandas实现多列数据依次追加堆叠到第一列的方法咨询

核心代码实现

1. 按你构思的迭代逻辑实现

import pandas as pd

# 读取CSV文件,统一转为字符串格式避免不同列类型冲突,空值填充为空字符串
df = pd.read_csv("your_file.csv", dtype=str).fillna("")

# 统计总列数
col_total = df.shape[1]
# 获取第一列列名
first_col = df.columns[0]

# 从第二列开始迭代,共迭代 col_total-1 次
for idx in range(1, col_total):
    # 取出当前列数据,重命名为第一列列名
    current_col = df.iloc[:, idx].rename(first_col)
    # 追加到原DataFrame末尾
    df = pd.concat([df, current_col.to_frame()], ignore_index=True)

# 仅保留第一列作为结果
result = df[[first_col]]

# 如需输出到文件,执行下方代码即可
# result.to_csv("output.csv", index=False)

2. 更优的无迭代实现方案

不需要手动循环迭代,使用Pandas内置的melt函数即可实现需求,性能和代码简洁度都远高于手动迭代方案,尤其适合数百列的大文件场景:

import pandas as pd

df = pd.read_csv("your_file.csv", dtype=str).fillna("")
first_col = df.columns[0]

# melt默认按列顺序将所有列的值垂直合并为一列
result = pd.melt(df, value_name=first_col)[[first_col]]

方案说明

  • melt是Pandas专门用于宽表转长表的内置函数,会按照列的原始顺序,先取第一列所有行的值,再取第二列所有行的值,以此类推,完全匹配你的堆叠需求
  • 统一指定dtype=str和fillna("")是为了避免不同类型的列合并时出现格式异常,同时保留原始空值为空白内容,符合输出要求
  • 无迭代方案避免了循环拼接DataFrame的性能损耗,数百列的场景下运行速度提升非常明显

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 00:27:02