如何将Pandas宽表转换为指定长表结构?pivot_table遇参数限制
Pandas宽表转长表实现方案
当前数据框
| Week | Sales | Revenue |
|---|---|---|
| 1 | 34 | 56 |
| 2 | 42 | 57 |
| 3 | 20 | 6 |
目标结构
| Week | Parameter | Total |
|---|---|---|
| 1 | Sales | 34 |
| 1 | Revenue | 56 |
| 2 | Sales | 42 |
| 2 | Revenue | 57 |
| 3 | Sales | 20 |
| 3 | Revenue | 6 |
你之前尝试的pd.pivot_table用法有误,因为pivot_table是用于将长表转换为宽表的工具,而你当前的需求是宽表转长表,应该使用pd.melt函数来实现。
正确代码实现
import pandas as pd # 假设原始数据框为df1 df1 = pd.DataFrame({ 'Week': [1, 2, 3], 'Sales': [34, 42, 20], 'Revenue': [56, 57, 6] }) # 使用melt转换结构 result = pd.melt( df1, id_vars=['Week'], # 保持不变的标识列 var_name='Parameter', # 原列名转换后的类别列名 value_name='Total' # 原列数值转换后的数值列名 ) print(result)
代码说明
id_vars:指定不需要转换的列,这里Week列会保留原有值,与转换后的参数行一一对应var_name:设置原列名(Sales、Revenue)转换后的列标题,对应目标结构的Parametervalue_name:设置原列中数值转换后的列标题,对应目标结构的Total
运行代码后即可得到目标格式的数据框。
内容的提问来源于stack exchange,提问作者Matt
相关产品推荐
相关产品推荐

