pandas中df.rename()的具体使用
本文详细介绍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']})
dfname 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 maleindex、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 malecopy: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 13errors:{‘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()内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









