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

如何递归熔铸多列Pandas宽表并将列名转为索引

解决方案:将GIS索引的宽DataFrame转为复合索引长表

使用pandas内置的melt()方法即可实现通用的宽表转长表操作,无需手动指定所有列名,完美适配任意数量的列:

步骤说明与代码实现

  1. 重置索引:先把作为索引的GIS转回普通列,方便后续熔铸操作
  2. 执行熔铸:用melt()自动识别所有非标识列,转为Variable(原列名)和Value(对应值)两列
  3. 设置复合索引:将GIS和Variable设为最终的复合索引
import pandas as pd

# 构造示例输入(与你的输入一致)
df = pd.DataFrame({
    "GIS": [1, 2, 3], 
    "X0": [100, 200, 300], 
    "X1": [50, 51, 52], 
    "X2": [71, 72, 73], 
    "Xn": [100, 150, 210]
})
df = df.set_index(["GIS"])

# 核心转换代码
df_reset = df.reset_index()
melted_df = df_reset.melt(id_vars="GIS", var_name="Variable", value_name="Value")
new_df = melted_df.set_index(["GIS", "Variable"])

效果验证

执行上述代码后,new_df的结构与你给出的期望输出完全一致:

Value
GIS Variable         
1   X0           100
    X1            50
    X2            71
    Xn           100
2   X0           200
    X1            51
    X2            72
    Xn           150
3   X0           300
    X1            52
    X2            73
    Xn           210

内容的提问来源于stack exchange,提问作者DP-WA

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 18:43:21