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
相关产品推荐
相关产品推荐

