如何将Pandas宽格式国家计量指标数据表转置为长格式?
解决Pandas宽表转长表的问题
嘿,这个需求太典型了!Pandas里的melt()函数就是为这类宽表转长表的场景设计的,完美匹配你的需求。我给你拆解一下具体操作:
核心步骤:使用melt()函数
假设你的原始DataFrame命名为df,直接用以下代码就能完成转换:
1. 基础转换代码
首先如果原始列名是Country Code(带空格),建议先重命名成下划线格式(可选,但代码更易读),然后调用melt():
# 可选:重命名列名,避免空格带来的麻烦 df = df.rename(columns={"Country Code": "Country_Code"}) # 执行宽转长 long_format_df = df.melt( id_vars="Country_Code", # 保留作为标识的列,不参与转换 var_name="Year", # 原年份列名要转换成的新列名 value_name="Econometric_Metric" # 原指标值对应的新列名 )
2. 优化处理(可选)
- 年份转整数类型:原年份列可能是字符串格式(比如
"1960"),可以转成整数方便后续分析:
long_format_df["Year"] = long_format_df["Year"].astype(int)
- 移除NaN值:如果不想保留缺失值的行,直接添加
dropna():
long_format_df = long_format_df.dropna(subset=["Econometric_Metric"])
效果验证
转换完成后,你的数据表就会变成三列:
Country_Code:国家代码(如ABW、AFG)Year:年份(1960到2015)Econometric_Metric:对应年份的指标值(无缺失的情况下)
这样的长格式非常适合后续做时间序列分析、可视化(比如折线图)或者统计建模哦!
内容的提问来源于stack exchange,提问作者Ferit
相关产品推荐
相关产品推荐

