在Pandas中实现逆透视操作求助:数据格式转换需求
Pandas逆透视(宽表转窄表)解决方案
嗨,这个需求用Pandas内置的melt()函数就能轻松实现,这正是你要的**逆透视(即pivot的反向操作)**功能!
步骤1:构造原始数据(模拟你的输入)
先还原你给出的宽表数据:
import pandas as pd df = pd.DataFrame({ 'Date': [2005, 2006], 'A': [1, 6], 'B': [2, 7], 'C': [3, 8], 'D': [4, 9], 'E': [50, 10] })
步骤2:执行逆透视操作
直接调用melt()函数,指定关键参数即可完成转换:
# 核心逆透视代码 melted_df = df.melt( id_vars=['Date'], # 保留作为标识的列,不会被展开 var_name='X', # 原来的列名(A/B/C/D/E)会存入这个新列 value_name='Val' # 原来列中的数值会存入这个新列 )
可选:排序优化(让结果更整齐)
如果你希望结果按Date和X有序排列,可以追加排序操作:
melted_df = melted_df.sort_values(['Date', 'X']).reset_index(drop=True)
最终结果
执行完后,melted_df的结构就完全符合你的需求了:
| Date | X | Val |
|---|---|---|
| 2005 | A | 1 |
| 2005 | B | 2 |
| 2005 | C | 3 |
| 2005 | D | 4 |
| 2005 | E | 50 |
| 2006 | A | 6 |
| 2006 | B | 7 |
| 2006 | C | 8 |
| 2006 | D | 9 |
| 2006 | E | 10 |
内容的提问来源于stack exchange,提问作者GlenCloncurry
相关产品推荐
相关产品推荐

