如何在Pandas中按指定列转换表格(宽表转长表)
宽表转长表解决方案
这是典型的宽格式DataFrame转长格式操作,用pandas内置的melt()函数就能快速实现,步骤如下:
1. 修正原始DataFrame创建代码
你提供的原始代码存在语法错误,正确创建方式需用字典传入pd.DataFrame:
import pandas as pd # 正确创建宽格式DataFrame df = pd.DataFrame({ "Country": ["India", "China", "USA", "UK"], 2001: [11, 12, 13, 14], 2002: [21, 22, 23, 24], 2003: [31, 32, 33, 34], 2004: [41, 42, 43, 44] })
2. 使用melt()转换为长格式
melt()核心参数作用:
id_vars:指定保留为标识符的列(此处为Country)var_name:设置原列名转换后的新列名(此处为Year)value_name:设置原列值转换后的新列名(此处为Value)
执行转换的代码:
# 转换为长格式DataFrame df_long = df.melt( id_vars="Country", var_name="Year", value_name="Value" ) # 可选:将Year列转为整数类型(原列名为整数,melt后默认是object类型) df_long["Year"] = df_long["Year"].astype(int)
转换结果
最终df_long的结构与你需求完全匹配,示例片段如下:
| Country | Year | Value |
|---|---|---|
| India | 2001 | 11 |
| China | 2001 | 12 |
| USA | 2001 | 13 |
| UK | 2001 | 14 |
| India | 2002 | 21 |
| ... | ... | ... |
| UK | 2004 | 44 |
内容的提问来源于stack exchange,提问作者Likhith Chakravarthi K C
相关产品推荐
相关产品推荐

