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

Pandas索引列存在重复值时生成非数值透视表报错如何解决

报错原因

pivot()方法要求index和columns的组合必须唯一,不能存在重复的分组项,一旦出现同一sale_id下有重复的product记录,就会抛出该错误。哪怕是字段前后有隐形空格导致看似唯一的product实际重复,也会触发该报错。

解决方案

推荐两种实现方式,都可以兼容存在重复分组的场景:

  1. 使用pivot_table()方法(推荐)
    该方法支持通过aggfunc参数指定重复值的聚合规则,示例代码如下:
# 先清理字段前后空格,避免隐形重复导致的报错
df['product'] = df['product'].str.strip()
df['sale_date'] = df['sale_date'].str.strip()

# 生成透视表,aggfunc根据需求调整:first取第一个日期、last取最后一个日期,需拼接用lambda x: ','.join(x)
result = df.pivot_table(
    index='sale_id',
    columns='product',
    values='sale_date',
    aggfunc='first'
)

# 可选:去除columns的名称头,匹配你预期的输出格式
result = result.rename_axis(columns=None)
  1. 使用groupby + unstack组合
    逻辑更底层灵活,适合需要自定义复杂聚合逻辑的场景:
result = df.groupby(['sale_id', 'product'])['sale_date'].first().unstack()
# 同样可加rename_axis处理表头格式
result = result.rename_axis(columns=None)

运行上述代码后输出的结果就和你预期的格式一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 15:39:00