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

Pandas实现三列DataFrame转产品为列、日期为行的宽表方法

解决方案

Pandas提供了多个原生方法可以直接完成这种长表转宽表的操作,无需手动遍历匹配:

方法1:pivot(无重复值时优先用,最适配你的需求)

只需要一行代码即可实现目标转换:

# 假设你的原始DataFrame变量名为df
transformed_df = df.pivot(
    index="Date",
    columns="Prod_name",
    values="Price"
).reset_index()

参数说明:

  • index:指定作为行索引的列,这里填日期列Date
  • columns:指定要展开为新列的列,这里填产品名列Prod_name
  • values:指定填充单元格的取值来源列,这里填价格列Price
  • 末尾的reset_index()是为了把Date从索引还原为普通列,完全匹配你给出的目标表结构,如果你接受Date作为索引可以去掉该方法。

方法2:pivot_table(存在重复的日期+产品组合时使用)

如果原始数据里存在同一个日期对应同一个产品多条价格记录的情况,可以用pivot_table指定聚合规则处理重复值:

# 示例为重复值取第一个出现的价格,aggfunc也可以改为sum、mean等符合你需求的聚合函数
transformed_df = df.pivot_table(
    index="Date",
    columns="Prod_name",
    values="Price",
    aggfunc="first"
).reset_index()

方法3:groupby + unstack 组合实现

也可以通过分组后逆堆叠的方式实现同样效果:

transformed_df = df.groupby(["Date", "Prod_name"])["Price"].first().unstack().reset_index()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 13:48:02