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

如何在Pandas DataFrame中分组堆叠连续列并重命名列

解决方案

要实现将DataFrame前3列、后3列分别堆叠并合并为指定列的需求,可以用以下代码完成:

import pandas as pd

# 初始化原DataFrame
d = {'A': [76, 34], 'B': [21, 48], 'C': [45, 89], 'D': [56, 41], 'E': [3, 2],
     'F': [78, 32]}
df = pd.DataFrame(data=d)
df.columns=['A', 'A', 'A', 'A', 'A', 'A']

# 提取前3列并堆叠成单列
z1_col = df.iloc[:, :3].stack().reset_index(drop=True)
# 提取后3列并堆叠成单列
z2_col = df.iloc[:, 3:].stack().reset_index(drop=True)

# 合并为目标DataFrame
result_df = pd.DataFrame({'Z1': z1_col, 'Z2': z2_col})
print(result_df)

运行后输出结果完全符合预期:

Z1  Z2
0  76  56
1  34  41
2  21  3
3  48  2
4  45  78
5  89  32

关键步骤说明

  • df.iloc[:, :3] 和 df.iloc[:, 3:] 分别精准选取前3列和后3列,避免因列名重复(全为'A')导致的索引混乱
  • .stack() 方法将列维度的元素纵向堆叠到行维度,实现“每列元素依次排列”的效果
  • .reset_index(drop=True) 清除堆叠操作产生的多级索引,只保留纯数值序列
  • 最后将两个序列合并为新DataFrame,直接指定列名为Z1和Z2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 07:25:14