如何在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
相关产品推荐
相关产品推荐

