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

Pandas如何将M*N格式的DataFrame转换为(M*N)*1的单列DataFrame

实现方案

实现该需求有两种常用的高效方法:

方法1:使用stack方法(推荐)

这是最贴合该场景的原生方法,代码最简:

import pandas as pd
# 你的原始DataFrame
df = pd.DataFrame({'A': [1, 2], 'B': [3, 4], 'C': [5, 6]})
# 转换代码
result = df.stack().swaplevel().sort_index().to_frame(name='value')

步骤说明:

  • df.stack():将列名转为行的内层索引,得到多级索引Series,此时索引顺序为「原行索引、原列名」
  • swaplevel():交换两级索引的位置,变为「原列名、原行索引」的顺序
  • sort_index():按索引排序,保证输出顺序和预期完全一致
  • to_frame(name='value'):将Series转为单列DataFrame,列名设置为value

方法2:使用melt方法

如果你更熟悉宽表转长表的melt逻辑,也可以用该方法实现:

result = df.melt(var_name='col', ignore_index=False)\
           .set_index('col', append=True)\
           .swaplevel()\
           .sort_index()

两种方法输出的结果完全匹配你给出的预期格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 23:54:04