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

如何在pandas中创建数据透视表,将行值转列并按日期拆分独立行

这是典型的长表转宽表操作,你需要的分组逻辑可以直接通过pivot_table的index参数指定,无需额外做分组处理:

实现代码

import pandas as pd

# 方法1:通用pivot_table实现(兼容存在重复行的场景)
res = df.pivot_table(
    # index指定需要保留的公共维度,相同取值的行会合并为一条
    index=["id", "name", "date"],
    columns="measure",  # 要转为列名的列
    values="result",    # 新列的取值来源列
    aggfunc="first"     # 同维度下重复值的聚合规则,这里取第一条即可
).reset_index()  # 将index中的公共维度还原为普通列

# 可选:将默认填充的NaN替换为示例中的None
res = res.where(res.notna(), None)

如果你的原始数据不存在id+name+date+measure四列重复的情况,也可以用更简洁的pivot方法实现:

# 方法2:无重复数据场景的简化写法
res = df.pivot(
    index=["id", "name", "date"],
    columns="measure",
    values="result"
).reset_index().where(res.notna(), None)

参数说明

你提到的不同年份的分组逻辑已经被index参数中的date列覆盖,工具会自动将相同id+name+date的行合并,不同日期的行单独保留,最终输出格式和你期望的结果完全匹配。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 20:51:03