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

如何用Pandas合并列?如何将指定列上下合并并调整位置?

Pandas实现每3列一组上下合并并按组排列的解决方案

我来帮你搞定这个Pandas列合并的问题!从你的描述来看,你需要把数据按每3列分成一组,每组内的列上下堆叠成单个新列,然后将这些新列按分组顺序从左到右排列(第一组合并列在最左侧,依次类推)。你的现有代码逻辑没对齐这个需求,我先帮你分析问题,再给出正确的实现代码。

现有代码的问题分析

你的代码有几个关键逻辑错误,导致结果不符合预期:

  • 循环中每次用pd.concat([file1, x], ignore_index=True)是把原始完整数据和当前组的3列上下拼接,这完全不是“组内列合并”的逻辑,反而会不断扩大数据行数,最后只保留最后一次循环的错误结果。
  • list = [0,3,3,3]的分组步进逻辑混乱,虽然第一次能取到前3列,但后续的索引计算没有正确对应分组,而且没有把每组的3列合并成单个列。
  • 没有处理合并后列的排列顺序,完全没实现“每组合并列置于左侧,依次排列”的需求。

正确实现代码及解释

下面是符合你需求的代码,我会逐段解释逻辑:

import pandas as pd

# 读取Excel文件,注意index_col=None避免自动设置索引,sheet_name指定工作表
file_path = "C:\\Myfile.xlsx"
df = pd.read_excel(file_path, sheet_name="Sheet1", index_col=None)

# 计算分组:每3列一组,确保列数是3的倍数(如果有剩余列可以根据需求调整)
total_cols = df.shape[1]
group_size = 3
n_groups = total_cols // group_size

# 存储每个组合并后的列
merged_columns = []

for i in range(n_groups):
    # 获取当前组的3列:从i*3到(i+1)*3的列
    group_cols = df.iloc[:, i*group_size : (i+1)*group_size]
    # 将组内的3列上下合并成一个新列(ignore_index=True重置行索引)
    merged_col = pd.concat([group_cols.iloc[:, col] for col in range(group_size)], ignore_index=True)
    # 给合并后的列命名,方便识别
    merged_col.name = f"Merged_Group_{i+1}"
    merged_columns.append(merged_col)

# 将所有合并后的列拼接成最终的DataFrame
final_df = pd.concat(merged_columns, axis=1)

# 保存到新的Excel文件
final_df.to_excel("C:\\Myfile_new.xlsx", index=False)

代码逻辑详解

  1. 数据读取:使用index_col=None确保读取数据时不会把第一列当作索引,避免后续切片混乱。
  2. 分组计算:根据总列数和每组3列的规则,计算需要分成多少组。如果你的数据列数不是3的倍数,可以在n_groups后加上判断,处理剩余的列(比如单独合并剩余列)。
  3. 组内列合并:对每组的3列,通过pd.concat把每一列的内容依次上下堆叠,形成单个新列,同时重置行索引保证连续。
  4. 列拼接:把所有合并后的新列按分组顺序(从左到右)拼接成最终的DataFrame,正好满足你“每组合并列置于左侧,依次排列”的需求。
  5. 保存结果:将最终数据保存到新Excel文件,index=False避免输出额外的索引列。

示例验证

假设你的初始数据是这样的(6列,分成2组):

Col0Col1Col2Col3Col4Col5
A1B1C1D1E1F1
A2B2C2D2E2F2

运行代码后,最终结果会是:

Merged_Group_1Merged_Group_2
A1D1
A2D2
B1E1
B2E2
C1F1
C2F2

完全符合你“每3列合并置于左侧,下一组3列合并紧随其后”的需求。

内容的提问来源于stack exchange,提问作者C.J1990

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 21:07:37