使用sort_values排序DataFrame时遇TypeError: unhashable type: 'Series'错误
解决pandas sort_values报错TypeError: unhashable type: 'Series'
问题重现
执行以下代码时触发错误:
df=df.sort_values(by=['name', 'ID'])
尝试添加reset_index后仍报错:
df=df.sort_values(by=['name', 'ID']).reset_index(drop=True)
报错信息:
TypeError: unhashable type: 'Series'
注:涉及的DataFrame为21000行×19列。
原因分析
这个错误的核心原因是by参数指定的name或ID列中,存在不可哈希的元素类型(比如列表、字典、嵌套Series等),pandas在排序时无法对这类元素进行哈希比较。
解决步骤
- 先排查列内容类型,确认问题列:
# 检查name列的元素类型 print(df['name'].apply(type).unique()) # 检查ID列的元素类型 print(df['ID'].apply(type).unique()) - 根据排查结果处理列内容:
- 如果是列表/字典这类嵌套结构,可转为字符串:
df['name'] = df['name'].astype(str) df['ID'] = df['ID'].astype(str) - 如果是嵌套Series,可提取其标量值(假设每个嵌套Series只有一个值):
df['name'] = df['name'].apply(lambda x: x.iloc[0]) df['ID'] = df['ID'].apply(lambda x: x.iloc[0])
- 如果是列表/字典这类嵌套结构,可转为字符串:
- 处理完成后重新执行排序:
df = df.sort_values(by=['name', 'ID']).reset_index(drop=True)
内容的提问来源于stack exchange,提问作者Khaled DELLAL
相关产品推荐
相关产品推荐

