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

如何对pandas DataFrame做局部转置,将指定列转成行、日期列转为表头

Pandas 行列转换实现方案

你可以通过两种常用的pandas方法组合实现需求,具体代码如下:

方法1:melt + pivot组合(可读性更高)

# 第一步:将A/B/C列从列维度转为行维度,生成METRIC列存储指标名,value列存储对应值
df_melt = df.melt(id_vars=["station", "date"], var_name="METRIC", value_name="value")
# 第二步:将date列的取值转为新的列名,完成透视
result = df_melt.pivot(index=["station", "METRIC"], columns="date", values="value").reset_index()
# 可选操作:删除列名的多余标识
result.columns.name = None

方法2:stack + unstack组合(代码更简洁)

result = df.set_index(["station", "date"])\
           .stack()\
           .unstack("date")\
           .reset_index()\
           .rename(columns={"level_2": "METRIC"})
result.columns.name = None

方法说明

  • melt:宽表转长表的核心方法,适合将多列同类型指标转为行维度
  • pivot:透视方法,可将指定列的不同取值转为新的列维度
  • stack:将当前列索引转为最内层的行索引
  • unstack:将指定层级的行索引转为列索引

两种方法运行后得到的结果都和你需要的输出格式完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 03:09:03