df.rename()用于更改行列的标签,即行列的索引。可以传入一个字典或者一个函数。在数据预处理中,比较常用。
官方文档:
DataFrame.rename(self, mapper=None, index=None, columns=None, axis=None, copy=True, inplace=False, level=None, errors=‘ignore’)
参数解释:
创建实例
1
2
3
|
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
映射关系,可以是字典,也可以是一个函数。
1
2
3
4
5
6
7
8
9
10
11
12
13
|
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:
这3个参数作用类似,dataframe中有行和列两个方向,在改名时,需要指明改名的是行还是列(默认是行),使用df.rename(index = mapper)或者df.rename(columns=mapper)的形式,和df.rename(mapper,axis=0 or 1)的效果是一样的
1
2
3
4
5
6
7
8
9
10
11
12
13
|
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,效果不清楚。。。文档就一句话,与会复制底层数据(also copy underlying data), 等一个课代表解答一下。
inplace:bool,default False
将结果返回赋值给原变量,无需再次将结果赋值给新变量。即df.rename(inplace=True)之后,df的值发生改变(pandas中好多方法都有这个参数,此处就演示了)
level int,level name,default none
针对多层索引,指定需要改名字的索引具体是哪一个。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
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来决定错误的处理方式
1
2
3
4
5
6
7
8
9
|
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()内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:https://blog.csdn.net/lisnyuan/article/details/106802431