如何重命名pandas dataframe的第一列或指定序号的列?
重命名Pandas DataFrame指定位置列的实现方案
重命名第一列的简洁方法
你当前使用的rename方法已经是非常稳妥的通用实现,不会改动其他列名称、默认返回新对象不会修改原数据。如果需要更简洁的写法,可以根据是否需要保留原DataFrame选择对应方案:
- 原位修改(直接改动原DataFrame,性能最优)
直接操作列名的底层数组即可,写法最简短:
注意不要直接写df.columns.values[0] = 'Column1'df.columns[0] = 'Column1',Pandas的Index对象默认不可变,直接赋值会抛出类型错误 - 非原位修改(不改动原DataFrame,返回新对象)
可以用set_axis方法简化写法,比rename不需要构造字典:df = df.set_axis(['Column1', *df.columns[1:]], axis=1)
重命名任意指定序号列的通用方法
列序号默认从0开始计数,假设你要修改索引为n的列名称为NewCol,可以用以下方案:
- 原位修改方案:
直接修改对应位置的列名数组即可,适配包括重名列在内的所有场景:# n替换为你要修改的列的索引,比如修改第3列就填2 df.columns.values[n] = 'NewCol' - 非原位修改方案:
- 通用
rename写法,和你当前的实现逻辑一致,仅修改对应位置的列,不影响其他列:
df = df.rename(columns={df.columns[n]: 'NewCol'})- 列名列表修改后重新赋值,适合需要同时修改多列位置名称的场景:
cols = df.columns.to_list() cols[n] = 'NewCol' df = df.set_axis(cols, axis=1) - 通用
如果你的DataFrame存在重名列,优先选择按位置修改列名数组/列表的方案,不会误改其他重名列
内容的提问来源于stack exchange,提问作者JALO - JusAnotherLivngOrganism
相关产品推荐
相关产品推荐

