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

使用pd.explode展开DataFrame时遇TypeError: unhashable type: 'list'

问题原因及解决办法

错误原因

你遇到的TypeError: unhashable type: 'list',是因为执行set_index('Column_Name')时,指定的Column_Name列里包含列表类型的数据——pandas的索引要求元素必须是可哈希类型(比如字符串、数字、元组等),而列表是可变对象,不可哈希,所以无法被设为索引,直接触发报错。

正确实现方式

在pandas 1.5.2版本中,不需要用set_index+apply的绕弯写法,df.explode()本身就支持一次性展开多个包含列表的列:

  1. 若明确知道哪些列是列表列,直接指定列名即可:
df.explode(['列名1', '列名2'])
  1. 若不确定哪些列包含列表,可以自动识别后批量展开:
# 找出所有存在列表元素的列
list_cols = df.columns[df.applymap(lambda x: isinstance(x, list)).any()]
# 批量展开这些列
df_exploded = df.explode(list_cols)

补充说明

你原本的写法本质是先把非列表列设为索引,再对剩余列逐个展开,但这个逻辑的前提是索引列不能包含列表——而你的场景里索引列刚好有列表,所以直接报错。用原生的explode多列支持不仅更简洁,还能避开索引的坑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 22:56:28