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

Python中透视含字典值的DataFrame:解决pivot_table报错问题

解决DataFrame透视时含字典类型列的报错问题

问题场景

原始DataFrame结构如下(Quantity列同时包含字典和数值类型):

Code    Description Date    Quantity
dasd2132    dummy 1 2023-06 {'prev_value': 0.0, 'new_value': 90.0}
312dasda    dummy 2 2023-07 0
das432cs    dummy 3 2023-08 0
31231dsa    dummy 4 2023-09 0

需求是将Date列的值作为新的列名,Quantity列的内容填充到对应列,最终得到如下格式的结果:

Code    Description 2023-06                                 2023-07 2023-08 2023-09
dasd2132    dummy 1 {'prev_value': 0.0, 'new_value': 90.0}  0   0   0

尝试使用pivot_table实现时:

pivoted_df = pd.pivot_table(df, index=['Code', 'Description'], values='Quantity', columns='Date', sort=False)

触发报错:TypeError: unhashable type: 'dict'

优化解决方案

方案1:使用pivot方法

pivot无需默认聚合操作,只要index+columns的组合唯一即可直接转置,最后补全空值为0:

import pandas as pd

pivoted_df = df.pivot(index=['Code', 'Description'], columns='Date', values='Quantity').fillna(0)

方案2:使用set_index + unstack组合

通过设置多层索引后将Date层转为列,同样补全空值:

import pandas as pd

pivoted_df = df.set_index(['Code', 'Description', 'Date'])['Quantity'].unstack(level='Date').fillna(0)

报错原因说明

pivot_table默认会对values列执行聚合计算(如均值、求和),而字典属于不可哈希类型,无法参与聚合逻辑,因此抛出报错。上述两种方法均不需要聚合操作,适配你的数据唯一性场景(每条数据的Code+Description+Date组合唯一),可以正常保留字典类型的值并完成透视。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 13:35:13