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

如何将Pandas DataFrame的分类列值转为新列生成目标宽表

解决方案

你需要的是Pandas的长表转宽表操作,直接用pivot方法即可实现需求,代码如下:

import pandas as pd

# 你给出的原始df
df = pd.DataFrame(
{'Date': ['2015-02-24','2015-02-24','2015-02-25','2015-02-26'],
'Class': ['E','M','M','H'], 
'Value':[100,200,200,300]})

# 核心转换代码
df1 = df.pivot(index='Date', columns='Class', values='Value').reset_index()

如果你的实际数据里存在同一日期、同一Class对应多个Value的情况,避免pivot报错可以用pivot_table指定聚合规则,示例如下:

# aggfunc可根据需求替换为'mean'/'max'/'min'等聚合函数
df1 = df.pivot_table(index='Date', columns='Class', values='Value', aggfunc='sum').reset_index()

参数说明

  • index:指定转换后作为行维度的列,这里填Date
  • columns:指定要展开为新列的字段,这里填Class,它的唯一取值E、M、H会自动成为新列名
  • values:指定填充到新表格单元格的数值来源列,这里填Value
  • reset_index():将作为行索引的Date还原为普通数据列,和你给出的预期输出格式完全匹配

转换后无匹配值的位置默认会填充为NaN,最终输出和你要求的一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 00:51:03