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

Python Pandas如何将多列堆叠为单列同时保留指定列不变

解决方法

核心思路是先把A列设为行索引,再堆叠B、C列,就能保留A列和对应行的绑定关系,具体实现如下:
如果你的原始数据中空单元格是空白字符串,先替换为NaN适配stack()的默认逻辑:

import numpy as np
df = df.replace('', np.nan)

核心处理代码:

res = df.set_index('A')[['B', 'C']].stack().reset_index(name='D')[['A', 'D']]

输出的res就是你需要的结果:

AD
1p
1q
1q
2p
2p
2q

步骤说明

  • set_index('A'):将A列转为行索引,保证后续堆叠时A的值和对应行的B、C值绑定不丢失
  • [['B', 'C']]:选中需要堆叠的两列,排除无关列
  • stack():将列维度的B、C转为行维度,默认自动丢弃空值,刚好匹配跳过空单元格的需求
  • reset_index(name='D'):将多级索引转回普通数据列,堆叠生成的值命名为D列
  • 最后[['A', 'D']] 筛选目标列,调整输出顺序

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 01:54:07