You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python将宽表DataFrame转换为长表格式?

将宽表DataFrame转换为长表的Python实现

在Python中,使用pandas库的melt()函数可以轻松完成宽表到长表的格式转换,这是处理这类数据重塑需求的标准方法。

步骤1:构造初始宽表(或读取已有数据)

先还原你提供的初始宽表数据:

import pandas as pd

df_wide = pd.DataFrame({
    'City': ['City_1', 'City_2', 'City_3'],
    '2000': [10, 15, 20],
    '2005': [11, 14, 30],
    '2010': [12, 13, 25],
    '2015': [13, 12, 35]
})

步骤2:使用melt()转换为长表

调用melt()函数并指定关键参数即可完成转换:

df_long = df_wide.melt(
    id_vars=['City'],       # 保留不变的标识列
    var_name='Year',        # 原年份列名对应的新列名称
    value_name='Population' # 原人口数值对应的新列名称
)

# 可选:将Year列从字符串转为整数类型(如需数值运算)
df_long['Year'] = df_long['Year'].astype(int)

参数说明

  • id_vars:设置不需要被“融化”的列,这里City作为每个记录的标识,会重复对应每一条年份-人口数据。
  • var_name:定义从原宽表列名(2000、2005等)转换而来的新列名称,对应长表中的Year列。
  • value_name:定义从原宽表各列数值转换而来的新列名称,对应长表中的Population列。

转换后的长表结果

执行上述代码后,df_long的结构与你需求的完全一致:

CityYearPopulation
City_1200010
City_1200511
City_1201012
City_1201513
City_2200015
City_2200514
City_2201013
City_2201512
City_3200020
City_3200530
City_3201025
City_3201535

内容的提问来源于stack exchange,提问作者Corger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 00:10:20