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

pandas使用pivot转换DataFrame时报KeyError及重复索引错误如何解决

你的原始DataFrame结构如下:
示例数据图

报错原因说明

  1. 第一次调用pivot报KeyError: 'time',是因为此时time已经是df2的索引,不属于DataFrame的普通列,pivot的index参数默认从普通列中查找指定字段,因此找不到对应字段报错。
  2. 重置索引后调用pivot报ValueError,是因为你的数据中存在多组time和sub_transformer取值完全相同的重复行,pivot要求这两个字段的组合必须唯一,因此无法直接完成重构。

可行解决方案

方案1:使用pivot_table处理重复值(推荐)

如果重复值属于业务允许的情况,可通过指定聚合规则处理重复项,不需要提前重置索引:

result = df2.pivot_table(
    index=df2.index,  # 直接复用已有的time索引
    columns='sub_transformer',
    values='value',
    aggfunc='first'  # 重复时取第一个值,可按需替换为'mean'/'sum'/'max'等聚合函数
)

方案2:先去重再调用pivot

如果你确认重复条目是无效的异常数据,可先去重再做转换:

# 重置索引后对time和sub_transformer组合去重,保留第一条数据
df_clean = df2.reset_index().drop_duplicates(subset=['time', 'sub_transformer'], keep='first')
result = df_clean.pivot(index='time', columns='sub_transformer', values='value')

两种方案最终输出的结果都会保持time为索引,将sub_transformer的不同取值作为新列,完全符合你的需求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 00:48:03