You need to enable JavaScript to run this app. Python实现Pandas DataFrame行值转列的聚合透视操作
优惠活动
大模型
产品
解决方案
定价
更多

Python实现Pandas DataFrame行值转列的聚合透视操作

Pandas行值转列的宽表实现方法

你梳理的「分组聚合+透视转列」逻辑本身就是pandas实现这类需求的标准路径,可直接落地,无额外依赖,具体实现如下:

核心实现步骤

  • 第一阶段:按A、B、C、E列分组,对D列执行求和计算
  • 第二阶段:将分组结果中E列的日期值转换为独立列头,交叉位置填充对应分组的求和值
# 分组聚合
grouped = data1.groupby(["A", "B", "C", "E"], as_index=False)["D"].sum()
# 透视转宽表
data_MOD = grouped.pivot(
    index=["A", "B", "C"],
    columns="E",
    values="D"
).reset_index()

结果格式适配

pivot输出的结果会在无匹配值的交叉位置自动填充浮点型NaN,若要完全匹配你给出的目标输出格式,可补充两个调整操作:

  1. 将空值替换为示例中的字符串'NaN'
  2. 调整日期列的排列顺序,和目标结构对齐
# 空值替换
data_MOD = data_MOD.fillna("NaN")
# 列顺序调整
data_MOD = data_MOD[["A", "B", "C", "2021-04-18", "2021-04-16"]]

鲁棒性优化

如果原始数据中存在同分组维度的重复条目,拆分式的groupby+pivot会触发重复值报错,可直接用pivot_table一步完成分组+透视全流程,等价代码如下:

data_MOD = data1.pivot_table(
    index=["A", "B", "C"],
    columns="E",
    values="D",
    aggfunc="sum",
    fill_value="NaN"
).reset_index()[["A", "B", "C", "2021-04-18", "2021-04-16"]]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.24 15:36:10