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

Pandas执行drop_duplicates报unhashable type: 'list'错误如何解决

报错原因说明
  1. 你用错了方法:drop_duplicates的作用是删除不同行之间取值重复的条目,但你的需求是删除同一行内years和line_items两个列取值完全相等的行,二者逻辑完全不匹配。
  2. 就算你需要用drop_duplicates处理存列表的列,也会因为列表是可变、不可哈希的类型,无法参与哈希比较触发报错,这就是你看到TypeError: unhashable type: 'list'的原因。
解决方法

直接用布尔索引过滤掉两列相等的行即可,逐行比较两个列表的取值是否一致:

import pandas as pd

# 构造示例df
df_dict = {'years': {0: ['2019', '2018'], 1: ['2020', '2019'], 2: ['2019', '2018'], 3: ['2019', '2018'], 4: ['2020']}, 'line_items': {0: ['5709', '5795'], 1: ['1759669', '1578624'], 2: ['2019', '2018'], 3: ['1487', '1314'], 4: ['2020']}}
df = pd.DataFrame(df_dict)

# 过滤掉同一行years和line_items相等的行
df = df[df.apply(lambda row: row['years'] != row['line_items'], axis=1)]

运行后得到的df会自动排除索引为2、4的行,完全符合你的需求。如果数据量较大,可以先把两列的列表转为可哈希的元组再比较,性能会更好:

df = df[df['years'].apply(tuple) != df['line_items'].apply(tuple)]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 00:30:03