pandas学习之df.rename()

pandas学习之df.rename()

df.rename()用于更改行列的标签,即行列的索引。可以传入一个字典或者一个函数。在数据预处理中,比较常用。

官方文档:

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

参数解释:

  1. 创建实例
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
  1. 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
  1. index、columns、axis
    这3个参数作用类似,dataframe中有行和列两个方向,在改名时,需要指明改名的是行还是列(默认是行),使用df.rename(index = mapper)或者df.rename(columns=mapper)的形式,和df.rename(mapper,axis=0 or 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
  1. copy:bool,default = True
    默认为True,效果不清楚。。。文档就一句话,与会复制底层数据(also copy underlying data), 等一个课代表解答一下。
  2. inplace:bool,default False
    将结果返回赋值给原变量,无需再次将结果赋值给新变量。即df.rename(inplace=True)之后,df的值发生改变(pandas中好多方法都有这个参数,此处就演示了)
  3. 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

6.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)