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

Python Pandas重命名列无报错但未生效问题排查

解决Pandas DataFrame列重命名不生效的问题

嘿,这个问题我碰到好多次了!你之所以看不到列名变化,核心原因是Pandas的rename()方法默认不会直接修改原DataFrame,而是返回一个重命名后的新对象——如果你没把这个新对象存下来,或者没开启原地修改,自然看不到列名更新。

给你两种可行的解决办法:

方法一:将重命名后的新对象重新赋值给原变量(推荐)

这种方式更安全,能避免意外修改原始数据导致的bug,直接修改你的代码就行:

import numpy as np
import pandas as pd
header = list(range(17))
energy = pd.read_excel('Energy Indicators.xls', usecols = [2, 3, 4, 5], skiprows = list(range(17)), skipfooter = 38)
# 把重命名后的新DataFrame赋值回energy变量
energy = energy.rename(columns={'Unnamed: 2': 'Country', 'Petajoules': 'Energy Supply', 'Gigajoules': 'Energy Supply per Capita', '%': '% Renewable'})

方法二:使用inplace=True参数直接修改原DataFrame

如果你确定不需要保留原始的energy数据,可以直接在原对象上修改,添加inplace=True参数即可:

import numpy as np
import pandas as pd
header = list(range(17))
energy = pd.read_excel('Energy Indicators.xls', usecols = [2, 3, 4, 5], skiprows = list(range(17)), skipfooter = 38)
# 添加inplace=True参数,直接修改原DataFrame
energy.rename(columns={'Unnamed: 2': 'Country', 'Petajoules': 'Energy Supply', 'Gigajoules': 'Energy Supply per Capita', '%': '% Renewable'}, inplace=True)

补充说明

Pandas的大多数数据处理方法都遵循“不修改原数据,返回新对象”的设计原则,这是为了防止开发者不小心覆盖原始数据。所以以后碰到类似“操作没生效”的情况,先看看方法是否需要赋值,或者有没有inplace参数可以开启原地修改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:32:59