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

Python中如何转置数据集并保留首列statinfo作为ID列

解决方案

你需要的是宽表转长表操作,无需使用transpose全量转置,pandas内置的melt方法可以直接匹配你的需求,实现步骤如下:

  • 先确认你已经将原始数据读取为DataFrame对象,命名为df,结构和你给出的示例一致。
  • 执行核心转换代码:
import pandas as pd

# 如果你还没有生成原始df,可以用以下测试代码构造和你示例一致的数据集
data = {
    "statinfo": ["AVG,NAC,ALL", "AVG,NAC,AUD"],
    "2021M08": [121.55, 1.6118],
    "2021M07": [122.32, 1.5926],
    "2021M06": [122.83, 1.5761],
    "2021M05": [123.01, 1.5653],
    "2021M04": [123.1, 1.5544]
}
df = pd.DataFrame(data)

# 转换核心逻辑
result_df = pd.melt(
    frame = df,
    id_vars = "statinfo", # 指定固定保留不需要转置的列
    var_name = "Date", # 原日期表头转成新列后的列名
    value_name = "Rate" # 原单元格数值转成新列后的列名
)
  • 转换后得到的result_df就是你需要的三列长表,输出样例如下:
statinfoDateRate
AVG,NAC,ALL2021M08121.55
AVG,NAC,AUD2021M081.6118
AVG,NAC,ALL2021M07122.32
AVG,NAC,AUD2021M071.5926
AVG,NAC,ALL2021M06122.83
AVG,NAC,AUD2021M061.5761
.........

如果需要对结果排序,可以额外执行排序代码:
result_df = result_df.sort_values(by=["statinfo", "Date"]).reset_index(drop=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 21:15:04