如何将DataFrame的列转换为多层行索引,得到指定数据结构?
Pandas将列转为多层行索引的实现
核心方法:stack()(最简洁高效)
stack()是Pandas专门用于将列标签转为行层级索引的方法,完美匹配你的需求:
- 先构建示例DataFrame:
import pandas as pd df = pd.DataFrame({'A': [1, 3], 'B': [2, 4]}, index=['a', 'b'])
原始数据:
A B a 1 2 b 3 4
- 一行代码完成转换:
result = df.stack().rename('value')
输出结果完全符合要求:
value a A 1 B 2 b A 3 B 4
备选方法:melt()(逻辑更直观)
如果需要更清晰地控制字段转换过程,可以用melt():
# 先把原行索引转为普通列,再重塑数据 result = df.reset_index().melt( id_vars='index', var_name='level_1', value_name='value' ).set_index(['index', 'level_1'])
这个方法步骤更明确,适合需要自定义中间字段名的场景。
内容的提问来源于stack exchange,提问作者이승훈
相关产品推荐
相关产品推荐

