如何将多列Pandas DataFrame扁平化转换为两列结构
Pandas多列DataFrame扁平化实现方案
你可以通过stack堆叠+索引拼接的方式快速实现需求,完整代码如下:
import pandas as pd # 构造示例数据 group_a = {'ba':[2.0,9.4,10.8], 'bb':[4.2,7.1,3], 'bc':[8.1,9.5,6.1]} A = pd.DataFrame(group_a, index=['aa','ab','ac']) # 核心处理逻辑 res = A.stack() res.index = res.index.map(lambda idx_pair: f"{idx_pair[0]}_{idx_pair[1]}") res = res.to_frame("Values")
执行后打印res即可得到你要的目标结构:
Values aa_ba 2.0 aa_bb 4.2 aa_bc 8.1 ab_ba 9.4 ab_bb 7.1 ab_bc 9.5 ac_ba 10.8 ac_bb 3.0 ac_bc 6.1
步骤说明
- 调用
stack()方法会将原DataFrame的所有列转换为行索引的第二层,生成一个双层索引的Series,索引第一层是原行索引、第二层是原列名,Series存储的值就是原表对应位置的数值 - 通过
index.map遍历双层索引的每一组元组,按照原行索引_原列名的格式拼接为单级字符串索引 - 最后调用
to_frame()将Series转换为单列DataFrame,指定列名为Values即可。
内容的提问来源于stack exchange,提问作者newbzzs
相关产品推荐
相关产品推荐

