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

DataFrame多列重命名遇TypeError: unhashable type: 'list' 求助

解决Pandas重命名列时的"TypeError: unhashable type: 'list'"错误

错误核心原因:你在rename方法的columns参数中,试图用列表作为字典的键,但字典的键必须是可哈希类型(如字符串、数字),列表属于不可哈希类型,因此触发报错。同时你的代码生成的new_column是嵌套列表结构,也不符合重命名的参数要求。

简化后的正确实现

直接生成「原列名→新列名」的映射字典,再传入rename方法即可:

import pandas as pd
import re

# 匹配末尾带".数字"格式的列名(比如"col.1"、"value.12")
pattern = r'\.[0-9]+$'

# 构建重名字典
rename_mapping = {}
for col in Endo.columns:
    if re.search(pattern, col):
        # 用正则替换去掉末尾的".数字"部分(兼容多位数数字)
        new_col = re.sub(pattern, '', col)
        # 如果确定末尾是".X"(X为单个数字),也可以用切片:new_col = col[:-2]
        rename_mapping[col] = new_col

# 执行重命名
Endo.rename(columns=rename_mapping, inplace=True)

原代码的冗余优化点

  1. 无需将列名转成DataFrame再筛选,用pandas的str.contains可直接定位目标列:
    target_cols = Endo.columns[Endo.columns.str.contains(pattern, case=False)]
    
  2. 原代码生成的new_column是嵌套列表,无法直接作为字典值使用,正确的新列名应为一维字符串列表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 23:24:46