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

pandas如何重塑DataFrame 拆分单个分类列为多列保留关联信息

pandas长表转宽表实现方案

你需要做的是把按变量行存储的长表,转换为每个变量单独成列的宽表,直接用pandas的透视接口即可实现,操作逻辑如下:

  • 明确需要保留的关联维度字段:行政区canton、时间time、站点stn、气候情景RCPs,这些字段会作为每一行的唯一标识保留
  • 以var列为拆分依据,把value列的取值填充到var对应取值的新列中
  • 转换完成后重置索引,把行维度的索引转回普通数据列即可

核心实现代码:

# 长表转宽表核心逻辑
df_after = df_before.pivot(
    index = ["canton", "time", "stn", "RCPs"],
    columns = "var",
    values = "value"
).reset_index()

# 按需调整列顺序,和目标结构对齐
df_after = df_after[["canton", "time", "stn", "RCPs", "tas", "tasmin", "tasmax"]]

异常情况处理

如果原始数据存在同一组维度+同一变量对应多条记录的情况,pivot方法会触发值重复报错,这时候替换为pivot_table方法,指定聚合规则即可:

df_after = df_before.pivot_table(
    index = ["canton", "time", "stn", "RCPs"],
    columns = "var",
    values = "value",
    aggfunc = "first" # 重复记录取第一条,也可根据需求替换为mean、sum等聚合函数
).reset_index()

转换后如果后续var列新增pr等其他变量,会自动生成对应的列,不需要手动提前定义列名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 17:51:24