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

是否需要使用pivot实现多列转单列?将每个单元格转为独立行

无需使用pivot实现多列转单列

你要实现的是将多列数据全部转为单列,不需要使用pivot——pivot主要用于基于行列索引重新组织带分类维度的数据,并不适配这种简单的多列转单列场景。以下是几种更直接的实现方法:

方法1:使用pd.melt

melt是pandas专为宽表转长表设计的工具,适合这类将所有列合并为单列的需求:

import pandas as pd
d = {'col1':[1,9,17],'col2':[2,10,18],'col3':[3,11,19],'col4':[4,12,20],'col5':[5,13,21],'col6':[6,14,22],'col7':[7,15,23],'col8':[8,16,24]}
df = pd.DataFrame(data=d)

# 转换为单列并重置索引
result = pd.melt(df, value_name='value')['value'].reset_index(drop=True)
print(result)

方法2:使用stack

stack会将列索引转换为行索引,之后直接提取数值并重置索引即可:

result = df.stack().reset_index(drop=True)
print(result)

方法3:使用numpy的ravel

直接展平DataFrame的数值数组,再转为DataFrame,通过参数控制展平顺序:

import pandas as pd
import numpy as np
d = {'col1':[1,9,17],'col2':[2,10,18],'col3':[3,11,19],'col4':[4,12,20],'col5':[5,13,21],'col6':[6,14,22],'col7':[7,15,23],'col8':[8,16,24]}
df = pd.DataFrame(data=d)

# 'F'表示按列优先展平,和你期望的顺序一致
result = pd.DataFrame(df.values.ravel('F'), columns=['value'])
print(result)

以上三种方法都能得到你期望的单列结果,输出示例片段:

0     1
1     2
2     3
3     4
4     5
5     6
6     7
7     8
8     9
9    10
...

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 15:05:17