如何将Pandas DataFrame实现列转行,转换为指定长表格式
实现方案
你需要的是宽表转长表的操作,直接用Pandas内置的melt方法即可实现,代码如下:
- 第一步:构造示例原始DataFrame(你已经有实际数据可跳过这步)
import pandas as pd df = pd.DataFrame({ 'Name': ['BTU', 'BTP'], 'A': [2, 1], 'B': [3, 2], 'C': [0, 7], 'D': [9, 9], 'E': [7, 0] })
- 第二步:执行转换
res = df.melt( id_vars='Name', # 保留不动的标识列 value_vars=['A','B','C','D','E'], # 需要展开的列 var_name='letter', # 展开后的列名存储字段 value_name='Value' # 展开后的数值存储字段 )
如果你需要展开的列非常多,不想手动枚举,可以把value_vars参数替换为df.columns.drop('Name'),自动获取除了Name之外的所有列进行展开。
转换后的结果结构如下:
| Name | letter | Value |
|---|---|---|
| BTU | A | 2 |
| BTU | B | 3 |
| BTU | C | 0 |
| BTU | D | 9 |
| BTU | E | 7 |
| BTP | A | 1 |
| BTP | B | 2 |
| BTP | C | 7 |
| BTP | D | 9 |
| BTP | E | 0 |
内容的提问来源于stack exchange,提问作者Lukwolf
相关产品推荐
相关产品推荐

