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

如何基于CLASS列透视DataFrame并为各列添加对应后缀?

解决方案:用pivot_table实现需求

不用纠结pivot、transpose或者melt,直接用pivot_table就最适合你的场景——它既能按Date分组,又能自动聚合求和,还会帮你用NaN填充缺失的CLASS值。

核心参数设置逻辑

直接按以下规则传参:

  • index='Date':把Date作为行索引,实现按Date分组
  • columns='CLASS':把CLASS的每个取值(A/B/C/D)作为列的分类维度
  • values='SZE(M)':指定要聚合计算的目标列
  • aggfunc='sum':对每个Date+CLASS组合的SZE(M)求和

示例代码

假设你的初始DataFrame结构如下:

import pandas as pd
import numpy as np

# 模拟初始数据
df = pd.DataFrame({
    'Date': ['2023-01-01', '2023-01-01', '2023-01-02', '2023-01-02', '2023-01-03'],
    'CLASS': ['A', 'B', 'A', 'C', 'D'],
    'SZE(M)': [10, 20, 15, 25, 30]
})

执行透视聚合操作:

# 生成透视表,缺失值默认用NaN填充
pivoted_df = df.pivot_table(
    index='Date',
    columns='CLASS',
    values='SZE(M)',
    aggfunc='sum'
)

# 重命名列,把CLASS作为后缀加到原列名后,同时重置索引让Date变回普通列
pivoted_df = pivoted_df.add_prefix('SZE(M)_').reset_index()

执行后得到的结果就是你期望的结构:Date列在前,后续列是SZE(M)_A、SZE(M)_B、SZE(M)_C、SZE(M)_D,缺失的CLASS对应值自动用NaN填充。

为什么不用pivot?

pivot要求index+columns的组合必须唯一,如果同一个Date下有多个相同CLASS的行,会直接报错;而pivot_table支持聚合操作,能自动处理重复组合的求和,更贴合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 02:50:21