pandas中df.rename()的具体使用

林见深
林见深
发布时间:2026-10-15 | 2人浏览过
原创

本文详细介绍pandas中DataFrame.rename()方法的使用。该方法用于更改行列标签(索引),支持传入字典或函数。文章解析了mapper、index、columns、axis、copy、inplace、level及errors等关键参数,并通过代码示例演示了如何修改行索引、列名以及处理多层索引和错误情况。

df.rename()方法主要用于修改DataFrame的行列标签,即行索引和列名。该方法接受字典或函数作为映射规则,在数据预处理阶段应用广泛。

官方文档:

DataFrame.rename(self, mapper=None, index=None, columns=None, axis=None, copy=True, inplace=False, level=None, errors=‘ignore’)

参数解释:

创建实例

import pandas as pd 
df = pd.DataFrame({'name':['zhao','qian','sun','wang'],'mark':[150,122,155,132],'gender':['female','female','male','male']})
df

name mark gender 0 zhao 150 female 1 qian 122 female 2 zhou 155 male 3 wang 132 male

mapper:dict or function

映射关系,可以是字典,也可以是一个函数。

df.rename({0:111})
    name    mark    gender
111    zhao    150        female #行索引从0变为111
1    qian    122        female
2    zhou    155        male
3    wang    132        male

df.rename(lambda x: x+11) #参数也可以是函数,索引都加了11
    name    mark    gender
11    zhao    150        female
12    qian    122        female
13    zhou    155        male
14    wang    132        male

index、columns、axis:

这三个参数作用类似。DataFrame包含行和列两个维度,改名时需指定操作对象(默认操作行)。使用df.rename(index=mapper)或df.rename(columns=mapper)的效果,与df.rename(mapper, axis=0或1)一致。

df.rename(lambda x: x+'11',axis=1)
    name11    mark11    gender11  #列索引都加了11,name变为name11
0    zhao    150        female
1    qian    122        female
2    zhou    155        male
3    wang    132        male

df.rename(columns=lambda x: x+'11')#等价于上面,写法更简洁直观
    name11    mark11    gender11
0    zhao    150        female
1    qian    122        female
2    zhou    155        male
3    wang    132        male

copy:bool,default = True

默认为True。文档说明其效果为“同时复制底层数据”,具体行为需结合上下文理解。

inplace:bool,default False

若设为True,结果将直接赋值给原变量,无需重新赋值给新变量。即执行df.rename(inplace=True)后,df的值会发生改变(pandas中许多方法均支持此参数,此处仅作演示)。

level int,level name,default none

针对多层索引,指定需要修改名称的具体层级索引。

df1 = pd.DataFrame([10,11,12,13],index=[['a','a','b','b'],[1,2,3,4],[4,3,2,1]],columns=['tt'])
df1
            tt #前三列都为索引
a    1    4    10
    2    3    11
b    3    2    12
    4    1    13
    
df1.rename(index={1:'dd'})
            tt#索引中所有的1都变成了dd
a    dd    4    10
    2    3    11
b    3    2    12
    4    dd    13
    
df1.rename(index={1:'dd'},level=1)
            tt#只有第2列索引改为dd(从0开始计数)
a    dd    4    10
    2    3    11
b    3    2    12
    4    1    13

errors:{‘ignore’, ‘raise’}, default ‘ignore’

定义发生错误时的处理方式。‘ignore’表示忽略错误,‘raise’表示抛出异常。例如,若传入的映射参数中包含原索引中不存在的值,将触发报错,通过设置ignore或raise来决定处理策略。

df1
            tt #前三列都为索引
a    1    4    10
    2    3    11
b    3    2    12
    4    1    13
    
df1.rename(index={11:'dd'},level=1,errors='raise')
KeyError: '[11] not found in axis'#报错,11没在索引内

到此这篇关于pandas中df.rename()的具体使用的文章就介绍到这了,更多相关pandas df.rename()内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表