如何基于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
相关产品推荐
相关产品推荐

