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

循环移除DataFrame列名指定字符串时触发TypeError错误求助

解决Pandas修改列名时的Index不可变错误

你遇到的TypeError: Index does not support mutable operations,原因是Pandas的列名(Index对象)是不可变类型,不能像列表那样直接通过索引赋值修改单个元素。

正确修改列名的两种方法:


方法1:将列名转为列表修改后重新赋值

把Index转成普通列表,修改第一个元素后再赋值回DataFrame的columns属性:

for i in dataframes_list:
    # 将列名转为列表
    cols = list(i.columns)
    # 修改第一列列名,移除'CODE'并清理多余空格
    cols[0] = cols[0].replace('CODE', '').strip()
    # 重新赋值列名
    i.columns = cols
    
    print(i.columns[0])
    i = dosomethingtoeachdf(i)
    i.to_excel(f'{i.columns[0]}.xlsx')

方法2:使用rename()方法(更推荐)

Pandas的rename()方法可以安全地修改指定列名,支持原地修改或返回新对象:

for i in dataframes_list:
    old_col_name = i.columns[0]
    new_col_name = old_col_name.replace('CODE', '').strip()
    # 原地修改列名,无需重新赋值给i
    i.rename(columns={old_col_name: new_col_name}, inplace=True)
    
    print(i.columns[0])
    i = dosomethingtoeachdf(i)
    i.to_excel(f'{i.columns[0]}.xlsx')

补充提示:

  • 确保修改列名的操作在调用dosomethingtoeachdf(i)之前完成,避免后续逻辑使用旧列名。
  • strip()用于清理替换后可能残留的空格(比如原列名xyz CODE替换后会变成xyz ),如果不需要可以去掉。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 00:45:13