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

Pandas如何生成保留原始行顺序的pivot table(数据透视表)

实现方案

我们可以通过Python+Pandas实现需求,全程不会打乱数据集的原始排序:

步骤1:导入数据集

可以直接读取你给出的HTML表格,或是已经导出的CSV文件,自动保留原始行顺序:

import pandas as pd
# 读取本地HTML表格
df = pd.read_html("你的HTML文件路径")[0]
# 若已导出为CSV可以用以下代码读取
# df = pd.read_csv("你的数据集文件路径.csv")

步骤2:关联AMG子分类与对应主分类

你提到AMG是它上方最近的非AMG分类的子项,我们可以通过向前填充的方式生成主分类关联列:

# 非AMG行的主分类为自身category值,AMG行沿用最近的非AMG分类名
df["主分类"] = df["category"].where(df["category"] != "AMG").ffill()

步骤3:按要求格式输出

# 按主分类分组输出,注意必须加sort=False参数,避免Pandas默认按分类名排序打乱原始顺序
for main_cat, group in df.groupby("主分类", sort=False):
    # 先输出主分类的核心指标
    main_row = group[group["category"] != "AMG"].iloc[0]
    print(f"{main_cat} | {main_row['segment']} | {main_row['ytd2018']} | {main_row['ytd2019']} | {main_row['Evolution']}")
    # 再输出该主分类下的所有AMG子项
    amg_rows = group[group["category"] == "AMG"]
    for _, amg_row in amg_rows.iterrows():
        print(f"  AMG {main_cat} | {amg_row['segment']} | {amg_row['ytd2018']} | {amg_row['ytd2019']} | {amg_row['Evolution']}")

效果说明

输出的主分类顺序完全匹配你原始数据中的非AMG分类出现顺序:Abcd → LEP → Perq → Lio → HEPT → Slid → NPD,每个主分类下的AMG子项顺序也和原始数据中该主分类后紧跟的AMG行顺序完全一致,完全符合保留原始排序的核心要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 11:45:04