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

如何将类透视表结构的DataFrame重塑为指定长表格式?

如何将透视表结构的DataFrame重塑为长表格式?

问题背景

我有一个类似透视表结构的DataFrame:

AB2022年12月2023年1月
A1B1100200
A1B2101201

想要将其转换为以下长表格式:

月份(Month)AB数值(Value)
2022年12月A1B1100
2022年12月A1B2101
2023年1月A1B1200
2023年1月A1B2201

尝试使用df.T转置后结果不符合预期,得到的是行列互换的结构,并非目标格式。

解决方案

使用Pandas的melt()方法实现宽表转长表,这是处理这类结构转换的标准方法,代码示例如下:

import pandas as pd

# 构造原始DataFrame(如果已有则跳过)
df = pd.DataFrame({
    'A': ['A1', 'A1'],
    'B': ['B1', 'B2'],
    '2022年12月': [100, 101],
    '2023年1月': [200, 201]
})

# 执行重塑
result_df = df.melt(
    id_vars=['A', 'B'],  # 保留作为标识的列,不参与融化
    var_name='月份(Month)',  # 原列名转为新列的名称
    value_name='数值(Value)'  # 原单元格值转为新列的名称
)

# 可选:按月份排序,匹配目标格式的顺序
result_df = result_df.sort_values('月份(Month)').reset_index(drop=True)

参数说明

  • id_vars:指定不需要被转换的列,也就是需要保留的分组标识列(这里是A和B)。
  • var_name:定义从原列名衍生出的新列的名称,对应目标中的“月份(Month)”。
  • value_name:定义从原单元格值衍生出的新列的名称,对应目标中的“数值(Value)”。

执行上述代码后,即可得到完全符合需求的DataFrame结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 21:05:14